相信很多使用appium做过APP自动化的同学都深有感触:
appium运行慢、时间长
uiautomatorviewer定位元素时得关掉appium server
在低版本的appium上获取toast需要切换automationName
现在有一款自动化测试工具uiautomator2,它几乎完美的避免了以上的问题。简单易学,对新手足够友好。本次我们介绍一下这款工具
1、介绍
uiautomator2是uiautomator的升级版,uiautomator是Google开发的一款用来做安卓自动化测试的Java库,uiautomator2则是将uiautomator中的接口封装成了Python库。因此它支持的语言为Python
优点主要概括如下:
环境搭建简单方便
执行速度很快
UI元素定位便捷好用、可视化好
获取toast非常简单
根据官方文档,要求:
Andorid版本 4.4+
Python版本 3.6+
2、环境部署
2.1安装 adb并配置环境变量
参考链接:https://blog.csdn.net/qq_35868412/article/details/91366770
2.2
安装python的uiautomator2库
这个不好安装,这里推荐用清华源或者豆瓣源来安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2
2.3 安装atx-agent
这一步的目的是从github上下载atx-agent,推送到手机,作为服务端,因此先要保证adb devices能看到模拟器上的连接。
开始安装atx-agent,命令:
python-m uiautomator2 init
安装成功后,可以看到手机桌面出现一个小汽车图标,这个就是atx.apk
2.4 安装weditor
命令:
pip install -U weditor
weditor是基于浏览器的UI元素查看器,安装成功后我们做个演示
在命令行输入 weditor 会自动打开浏览器,在页面上输入模拟器的设备序列号/使用usb链接,点击Connect,然后点击Dump Hierarchy刷新,可以看到模拟器的界面
windows将weditor生成快捷方式
weditor --shortcut
2.5 获取当前正在运行的app
命令
uiautomator2 current
2.6 常用语法
启动APP
其语法是:
d.app_start("指定的包名")
在uiautomator2里resourceId的定位方式是这样的:
d(resourceId="元素定位表达式")
隐性等待的语法:
d.implicitly_wait(等待时长) #单位是s
滑屏操作在uiautomator2中是swipe()方法,和appium类似,sx, ex和sy,ey分别表示起点和终点的坐标
d.swipe(sx, sy, ex, ey, 0.5)
为了适应不同的分辨率,可以获取到屏幕的尺寸,然后分别乘以系数。
获取屏幕尺寸的语法是:
d.window_size()
在uiautomator2中description定位的语法是:
d(description="元素定位表达式")
uiautomator2支持文本作为元素定位方式
d(text="元素定位表达式")
get_text()方法拿到文本值,使用assert进行断言
一个用例运行完之后,需要停止app并清理环境,这里使用app_stop()和app_clear()方法
d.app_stop('指定的包名')
d.app_clear('指定的包名')