小白对uiautomator2的理解

 

1、uiautomator:前端

uiautomator是为数很少的Android官方支持的自动化框架之一,uiautomator随着Android版本发布而更新。做为基于控件的自动化框架,uiautomator的总体框架以及API简单明了,发布后受到好评,可是也有人认为不支持resourcedid检索空间不合理,随后官方弥补了这一缺陷。java

2、uiautomator2:python

这里要说的uiautomator2是一个python库,用于Android的UI自动化测试,项目地址https://github.com/openatx/uiautomator2. 项目发源于xiaocong的uiautomator这个项目,新项目最大的改变要数原来手机必须数据线链接电脑的,可是使用了uiautomator2这个项目,就能够用WiFi代替USB链接电脑了。简单来讲就是能够不用数据线了。android

python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口,容许测试人员直接在PC上编写python的测试代码,操做手机应用,完成自动化git

3、uiautomator2工做原理:github

如图所示,python-uiautomator2主要分为两个部分,python客户端,移动设备浏览器

  • python端: 运行脚本,并向移动设备发送HTTP请求
  • 移动设备:移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

整个过程网络

  1. 在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端口)进行监听
  2. 在PC上编写测试脚本并执行(至关于发送HTTP请求到移动设备的server端)
  3. 移动设备经过WIFI或USB接收到PC上发来的HTTP请求,执行制定的操做

4、环境搭建

电脑安装 adb、python-uiautomator二、app

设备安装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.apkapp-uiautomator-test.apk两个apk

minicap 用于手机的快速截图

minitouch 用于远程控制

app-uiautomator.apk (UiAutomator2服务,Toast)

app-uiautomator-test.apk (UiAutomator2服务)

atx-agent (能够直接在安卓上运行的二进制程序)

5、应用及操做

调用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运行不起来,二者之间冲突太严重。
使用python-uiautomator2的两个接口screenshotdump_hierarchy这样就不会有冲突问题了

 

安装方法: pip install --pre weditor

使用方法: 
首先运行python -m weditor,以后浏览器会自动打开一个网页 http://atx.open.netease.com (注:这个网址仅提供一个前端,而python -mweditor这个命令则本地开放了HTTP的接口,前端去跟本地的服务去通讯)

定位方式

  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()
相关文章
相关标签/搜索