介绍一种Android UI自动化框架UIAutomator2,使用发现该框架有如下优点:
1.环境搭建便捷
2.UI控件识别有专业工具,可视化好
3.UI自动化编写采用python,学习成本低
4.UI自动化脚本运行稳定
缺点:
存在设备兼容性问题,如:
华为手机,无法通过IP离线执行UI自动化
三星S8手机微信webview页面无法识别元素
环境搭建
Android环境
从谷歌官网下载Android Platform Tools https://developer.android.com/studio/releases/platform-tools.html,解压,并加包含adb.exe
的目录加入到系统的PATH中
环境安装后验证代码
adb devices
python3环境
python3环境搭建参考先前的文章
//www.greatytc.com/p/da803d5f7ccd
UIAutomator安装
python2安装命令
pip install --pre -U uiautomator2
python3安装命令
pip3 install --pre -U uiautomator2
手机设备环境
手机链接pc,输入adb命令adb devices
发现设备后表明设备已连接成功
pc终端输入命令,以安装atx-agent至手机
python3 -m uiautomator2 init
安装成功如下图
应用及操作
uiautomator2使用基本过程
1.选择合适的方式连接手机,如usb数据线,Wi-Fi
2.使用工具,抓去手机app的控件元素
3.基于元素控件,调用uiautomator2 API编写UI自动化脚本
手机连接方式
1.使用WIFI连接
手机获取到手机的IP,并确保电脑可以PING通手机。手机的IP可以在设置-WIFI设置里面获取到。华为手机无法通过Wi-Fi连接(华为系统原因)
比如手机的IP是10.242.23.215,连接设备的代码为
import uiautomator2 as u2 //依赖包
d = u2.connect('10.242.23.215')
2.使用USB连接
手机的序列号可以通过adb devices获取到,假设序列号是123456f,连接代码为
import uiautomator2 as u2
d = u2.connect_usb('xxxxx')
控件识别
使用weditor进行元素识别,
安装方法如下:
pip3 install --pre weditor
使用方法
1.手机连接pc,adb命令保证能正确读取到设备
2.pc终端输入python3 -m webditor
,浏览器自动打开网页http://atx.open.netease.com
3.网页对应位置输入手机设备ip,点击connect连接手机设备,最后根据需要获取手机/app对应元素
正常启动页面如下:
设备id输入/Connect连接/reload刷新页面
UI自动化编写
具体参考git:
https://github.com/openatx/uiautomator2
操作控件
# click
d(text="Settings").click()
# long click
d(text="Settings").long_click()
# 等待元素的出现
d(text="Settings").wait(timeout=10.0)
中文字符输入
d(text="Settings").set_text("你好")