博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uiautomator2基础知识
阅读量:4068 次
发布时间:2019-05-25

本文共 3542 字,大约阅读时间需要 11 分钟。

安装

pip install --pre uiautomator2

或者
git clone https://github.com/openatx/uiautomator2
pip install -e uiautomator2
pip install pillow

##初始化测试手机,安装ATX

python -m uiautomator2 init
在这里插入图片描述

连接手机

  1. usb连接

    手机连接PC

  2. ip连接

    2.1通过usb连接
    2.2 adb命令:adb tcpip 5566
    2.3 adb connect ip:5566
    这是就可以断开usb连接了,用adb devices查看连接设备

元素定位工具weditor

1.安装

pip install --pre -U weditor

2.打开

python -m weditor
在这里插入图片描述
3.连接手机
输入ip:端口

uiautomator2基本使用

1.连接手机

import time
import uiautomator2 as u2
import weditor

u = u2.connect(“x.x.x.x:5566”)

u = u2.connect_usb(‘手机序列号’)

2.手机屏幕操作

u.unlock()解锁
u.screen_on() 激活屏幕
u.screen_off() 熄灭屏幕

3.app管理

#当前运行app
print(u.current_app())
#{‘package’: ‘com.tencent.mobileqq’, ‘activity’: ‘com.tencent.mobileqq.activity.SplashActivity’}
#app信息
print(u.app_info(“com.tencent.mobileqq”))
#{‘packageName’: ‘com.tencent.mobileqq’, ‘mainActivity’: ‘com.tencent.mobileqq.activity.SplashActivity’, ‘label’: ‘QQ’, ‘versionName’: ‘8.3.5’, ‘versionCode’: 1392, ‘size’: 90475125}
#启动app
u.app_start(“com.tencent.mobileqq”)
u.app_start(“com.tencent.mm”)
#time.sleep(10)
#停止之app
u.app_stop(“com.tencent.mm”)
#关闭app,除了个别
u.app_stop_all([“com.tencent.mobileqq”,“com.tencent.mm”])

4.元素定位

1.Text
u(text=“搜索”).click()
2.ResourceId
u(resourceId=“com.tencent.mobileqq:id/kag”).click()
3.Description
u(description=“快捷入口”).click()
4.ClassName
u(className=“android.widget.EditText”).click()
5.xpath定位
b.xpath(’//*[@text=“搜索”]’).click()
6.方位定位
6.1 左侧left
b(resourceId=“com.netease.mobimail:id/iv_mail_list_plus”).left(resourceId=“com.netease.mobimail:id/iv_mail_list_search”).click()
6.2 右侧right
b(resourceId=“com.netease.mobimail:id/iv_mail_list_search”).right(resourceId=“com.netease.mobimail:id/iv_mail_list_plus”).click()
6.3下方down
b(text=“写邮件”).down(text=“给自己发图”).click()
6.4 上方up
b(text=“给自己发图”).up(text=“写邮件”).click()

5.text输入

b.set_fastinput_ime(True) # 切换成FastInputIME输入法
b.set_fastinput_ime(False) # 切换成正常的输入法
#输入text
b(text=“搜索”).send_keys(“test”)

6.元素操作

6.1长按
u.long_click(838, 977, 5)
6.2点击
b(text=“搜索”).click()

执行adb shell

1.打开app

1.1 os
os.system(“adb shell am start com.tencent.mobileqq”)
1.2 subprocess
order=‘adb shell am start com.tencent.mobileqq’ #获取连接设备
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
print(pi.stdout.read())

#样例代码

1.小米手机添加联系人

import timeimport uiautomator2 as u2u = u2.connect("xxxxxxx:5566")now = time.strftime("%y%m%d%H%M%S")name = "testuser" + nowb = u.session("com.android.contacts")time.sleep(3)b(resourceId="android:id/icon").click()time.sleep(3)b(className="android.widget.EditText").click()b.set_fastinput_ime(True) # 切换成FastInputIME输入法b(className="android.widget.EditText").send_keys(name)b(resourceId="android:id/button2").click()time.sleep(3)b.press("back")b(resourceId="android:id/input").click()b(resourceId="android:id/input").send_keys(name)b.press("enter")l = b(text="%s"%name)info_dict = l.infoprint(info_dict)# {'bounds': {'bottom': 547, 'left': 61, 'right': 955, 'top': 485}, 'childCount': 0, 'className': 'android.widget.TextView', 'contentDescription': None, 'packageName': 'com.android.contacts', 'resourceName': None, 'text': 'testuser200509150448', 'visibleBounds': {'bottom': 547, 'left': 61, 'right': 955, 'top': 485}, 'checkable': False, 'checked': False, 'clickable': False, 'enabled': True, 'focusable': False, 'focused': False, 'longClickable': False, 'scrollable': False, 'selected': False}b.xpath("//*[@text找到 %d 个联系人]"%1)assert info_dict["text"]==name#删除测试数据x = info_dict["bounds"]["left"]y = info_dict["bounds"]["top"]b.long_click(x, y, 5)b(text="删除").click()b(resourceId="android:id/button1").click()

转载地址:http://xtmji.baihongyu.com/

你可能感兴趣的文章
WPF中PATH使用AI导出SVG的方法
查看>>
QT打开项目提示no valid settings file could be found
查看>>
android 代码实现圆角
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>
JavaScript的一些基础-数据类型
查看>>
coursesa课程 Python 3 programming 统计文件有多少单词
查看>>
coursesa课程 Python 3 programming course_2_assessment_7 多参数函数练习题
查看>>
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
Visual Studio 2010:C++0x新特性
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
Encoding Schemes
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
gdb 调试core dump
查看>>