uiautomator2+python UI自动化测试框架(二):运行前准备

一、Uiautomator2原理介绍

1.uiautomator2是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,目前仅支持android平台的原生应用测试,https://github.com/openatx/uiautomator2。但有两个缺点:

  • 测试脚本只能使用Java语言。
  • 测试脚本必须每次被上传到设备上运行。

2.工作原理

分为两个部分:

PC上的python端:运行脚本,并向系统设备发送http请求

移动设备:移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

3.整个过程

以下解释直接引用网址:https://testerhome.com/topics/11357
① 在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端口)进行监听
② 在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端)
③ 移动设备通过WIFI或USB接收到PC上发来的HTTP请求,执行制定的操作

4.初始化:部署相关守护进程:atx-agent

在cmd中:python -m uiautomator2 init

安装提示success即可

5。安装weditor(UI Inspector)

因为uiautomator是独占资源,所以当atx运行的时候uiautomatorviewer是不能用的,为了减少atx频繁的启停,我们开发了基于浏览器技术的weditor UI查看器。https://github.com/openatx/weditor

安装方法

pip install --pre -U weditor

Windows系统可以使用命令在桌面创建一个快捷方式 python -m weditor --shortcut

命令行启动 python -m weditor 会自动打开浏览器,输入设备的ip或者序列号,点击Connect即可。

具体参考文章:浅谈自动化测试工具python-uiautomator2

6.用法

atx-agent之后,设备可以和电脑通过WiFi链接,设备上的atx-agent安装完成后会自动提示手机的IP是多少(模拟器另说)。下文中我们用device_ip这个变量来表示手机的IP,这个IP唯一标示一个设备。

如果手机的WiFi跟电脑不是一个网段的,不能使用WiFi互联功能,需要通过数据线将手机连接到电脑上,使用命令adb forward tcp:7912 tcp:7912 将手机上的服务端口7912转发到电脑上,然后使用device_ip=127.0.0.1连接该手机。

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')
    

猜你喜欢

转载自blog.csdn.net/zhuhuahong/article/details/81868671