⼩⽩对uiautomator2的理解
⼀、uiautomator:
uiautomator是为数不多的Android官⽅⽀持的⾃动化框架之⼀,uiautomator随着Android版本发布⽽更新。作为基于控件的⾃动化框
架,uiautomator的整体框架以及API简单明了,发布后受到好评,但是也有⼈认为不⽀持resourcedid检索空间不合理,随后官⽅弥补了这⼀缺陷。
⼆、uiautomator2:
python-uiautomator2封装了⾕歌⾃带的uiautomator2测试框架,提供便利的python接⼝,允许测试⼈员直接在PC上编写python的测试代码,操作⼿机应⽤,完成⾃动化
三、uiautomator2⼯作原理:
如图所⽰,python-uiautomator2主要分为两个部分,python客户端,移动设备
python端: 运⾏脚本,并向移动设备发送HTTP请求
移动设备:移动设备上运⾏了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。
整个过程
1. 在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端⼝)进⾏监听
2. 在PC上编写测试脚本并执⾏(相当于发送HTTP请求到移动设备的server端)
3. 移动设备通过WIFI或USB接收到PC上发来的HTTP请求,执⾏制定的操作
四、环境搭建
电脑安装 adb、python-uiautomator2、
设备安装atx-agent:⾸先设备连接到PC,并能够adb devices发现该设备。
# 从github下载atx-agent⽂件,并推送到⼿机。在⼿机上安装包名为`com.github.uiautomator`的apk
$ python -m uiautomator2 init
success
最后提⽰success,代表atx-agent初始化成功。其实这个命令就是在⼿机上安装这5个东西minicap、minitouch、uiautomator_apk、atx-agent,uiautomator_apk安装了app-uiautomator.apk和app-uiautomator-test.apk两个apk
minicap ⽤于⼿机的快速截图
minitouch ⽤于远程控制
app-uiautomator.apk (UiAutomator2服务,Toast)
app-uiautomator-test.apk (UiAutomator2服务)
atx-agent (可以直接在安卓上运⾏的⼆进制程序)
五、应⽤及操作
调⽤uiautomator2的过程
1. 配置⼿机设备参数,设置具体操作的是哪⼀台⼿机
2. 抓取⼿机上应⽤的控件,制定对应的控件来进⾏操作
3. 对抓取到的控件进⾏操作,⽐如点击、填写参数等。
配置⼿机设备参数
python-uiautomator2连接⼿机的⽅式有两种,⼀种是通过WIFI,另外⼀种是通过USB。两种⽅法各有优缺点。
WIFI最便利的地⽅要数可以不⽤连接数据线,USB则可以⽤在PC和⼿机⽹络不在⼀个⽹段⽤不了的情况。
1. 使⽤WIFI连接
⼿机获取到⼿机的IP,并确保电脑可以PING通⼿机。⼿机的IP可以在设置-WIFI设置⾥⾯获取到。
⽐如⼿机的IP是192.168.0.100,连接设备的代码为
import uiautomator2 as u2
d = u2.connect('192.168.0.100')
2. 使⽤USB连接
⼿机的序列号可以通过adb devices获取到,假设序列号是123456f,连接代码为
import uiautomator2 as u2
d = u2.connect_usb('123456f')
抓取⼿机上应⽤的控件
虽然很想⽤Android SDK内置⼯具uiautomatorviewer.bat,但是运⾏uiautomator2的时候,uiautomatorviewer.bat运⾏不起来,两者之间冲突太严重。
view ui框架使⽤python-uiautomator2的两个接⼝screenshot和dump_hierarchy这样就不会有冲突问题了
安装⽅法: pip install --pre weditor
定位⽅式
1. ResourceId定位: d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
2. Text定位d(text="秒表").click()
3. Description定位d(description="..").click()
4. ClassName定位d(className="android.widget.TextView").click()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论