
Uiautomator2
Uiautomator2
简介
uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。它本来是Google提供的一个自动化测试的Java库,后来发展了python-uiautomator2,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它可以很便捷的编写python脚本来实现app的自动化测试。
uiautomator2貌似对H5架构的元素无法定位
按现开发技术,app可以分成三大类:
原生应用(nativeApp)
原生应用开发,是在 Android、iOS 等移动平台上利用官方提供的开发语言、开发类库、开发工具进行 App 开发。所以原生架构的 App 在应用性能上和交互体验上应该是最好的,但是原生应用的可移植性比较差,特别是一款原生的 App,Android 和 iOS 都要各自开发,同样的逻辑、界面要写两套。如微信 app,既有 Android 版的,也有 iOS 版的。
Web应用(WebApp)
H5 开发就是值是利用 Web 技术(HTML5、JavaScript、CSS)进行的 App 开发,现在还有一些开发框架可以利用,比如 phoneGap、bootstrap、jQuery 等。H5 开发的好处是可以跨平台,编写的代码可以同时在 Android、iOS、Windows 上进行运行。由于 Web 技术本身的限制,H5 移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性。
混合应用(hybridApp)
顾名思义就是原生和Web应用开发混合一起。
原生应用就对应app是原生架构,Web应用就对应app是H5架构,混合应用就是混合架构。
原理
python-uiautomator2 主要分为两个部分:
python 客户端
运行脚本,并向移动设备发送 HTTP 请求
移动设备
移动设备上运行了封装了 uiautomator2 的 HTTP 服务,解析收到的请求,并转化成 uiautomator2 的代码。
流程
在移动设备上安装
atx-agent
(守护进程), 随后atx-agent
启动 uiautomator2 服务 (默认 7912 端口) 进行监听在 PC 上编写测试脚本并执行(相当于发送 HTTP 请求到移动设备的 server 端)
移动设备通过 WIFI 或 USB 接收到 PC 上发来的 HTTP 请求,执行制定的操作
Uiautomator2的安装
Python环境安装
略!
adb环境安装
https://adbdownload.com/
pip 安装
https://pypi.org/project/pip/#files
cd G:\Download\pip-24.0\pip-24.0
python setup.py install
失败原因:缺少Setuptools库
Setuptools 安装
https://pypi.org/project/setuptools/#files
cd G:\Download\setuptools-69.5.1\setuptools-69.5.1
python setup.py install
继续安装pip即可
Uiautomator2安装
pip install --pre uiautomator2
atx-agent安装与启动(手机侧)
python -m uiautomator2 init
adb shell
chmod 775 /data/local/tmp/atx-agent
/data/local/tmp/atx-agent server -d
weditor安装
什么是
weditor
?
weditor
是基于python的查看APP元素的工具,能够提供辅助编写脚本、定位元素、调试代码等功能。
pip install -U weditor==0.5.2
#新版本安装报错
pip install --index pphttps://mirrors.ustc.edu.cn/pypi/web/simple/weditor==0.6.4
创建快捷方式
weditor --shortcut
weditor启动
weditor
无线连接
手机与PC处于同一局域网时,查看手机IP
import uiautomator2 as u2
d = u2.connect('192.168.0.107') #d=device对象
USB连接
#手机SN获取
adb devices
>List of devices attached
>R6CHBoKNT7E device
import uiautomator2 as u2
d = u2.connect('123456789F') # USB链接设备。或者u2.connect_usb('123456f')
#当前只有一个设备时可以用
d = u2.connect_usb()
#or
d = u2.connect() ,