UiAutomator APP 自动化工具 uiautomator2

sunapple · 2022年10月17日 · 2825 次阅读

**
一、介绍:
相信很多使用 appium 做过 APP 自动化的人都深有感触:

  1. appium 运行慢、时间长
  2. uiautomatorviewer 定位元素时得关掉 appium server
  3. 在低版本的 appium 上获取 toast 需要切换 automationName

现在有一款自动化测试工具 uiautomator2,它几乎完美的避免了以上的问题。简单易学,对新手足够友好。本次我们介绍一下这款工具

uiautomator2 是 uiautomator 的升级版,uiautomator 是 Google 开发的一款用来做安卓自动化测试的 Java 库,uiautomator2 则是将 uiautomator 中的接口封装成了 Python 库。因此它支持的语言为 Python

优点主要概括如下:

  1. 环境搭建简单方便
  2. 执行速度很快
  3. UI 元素定位便捷好用、可视化好
  4. 获取 toast 非常简单
  5. 根据官方文档,要求: Andorid 版本 4.4+ Python 版本 3.6+

二、环境部署
1.先升级 pip

python -m pip install --upgrade pip  -i https://pypi.douban.com/simple
  1. 安装 uiautomator2 py pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U uiautomator2 3.安装定位元素的包 weditor
# 基于浏览器查看 App 的界面元素
pip install --pre weditor  -i https://pypi.douban.com/simple
备注:安装源可以换#https://pypi.douban.com/simple  豆瓣镜像     和    #https://pypi.tuna.tsinghua.edu.cn/simple 清华镜像

安装 weditor 碰见的问题汇总:

  1. 问题一: py 装weditor时出现error in setup command: Error parsing C:\Users\WANGLI~1\AppData\Local\Temp\pip-install-3stpb4jr\weditor_50cffa0e823948fe8a0436a9af5b9898\setup.cfg: UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 825: illegal multibyte sequence: 解决方法:
git clone https://github.com/openatx/weditor
pip3 install -e weditor
参考https://github.com/alibaba/web-editor

4.在手机上安装 atx-agent 应用,
ps:atx-agent 作为服务端,一直运行在后台
执行如下命令,初始化安卓设备

# 安装apk服务到手机上
python -m uiautomator2 init

5.若需要截屏,需要安装 pillow

# 如果需要截屏,需要安装pillow
pip3 install pillow

6.weditor 连接安卓设备如下:
安卓端:
Windows 上运行 Android 端:
打开终端输入命令启动 weditor:
python -m weditor
命令执行成功后会自动调用浏览器打开地址http://localhost:17310/,如图:

选择目标设备 Android
输入命令查看 android 设备 UUID:adb devices
在 WEditor 界面输入设备 UUID
点击 Connect,连接成功
点击 dump hierarchy,即可定位元素

在执行 python -m weditor 这个命令的时候碰见问题汇总
A. 运行 python -m weditor 时,提示:ModuleNotFoundError: No module named 'tornado'
按照提示安装:pip install tornado
B. 再次运行 python -m weditor 时,提示:ModuleNotFoundError: No module named 'wda'
按照提示安装:pip install wda
C. 在安卓手机定位元素碰见的问题如下:

查看 cmd 窗口也报错

在 2022-08-31 在安卓 12MIUI13 机器上碰到以上问题,然后根据https://github.com/alibaba/web-editor/issues/114 这个描述去解决,还是不能解决以上问题。最后换了一个 vivo 手机,能正常元素定位了(备注:https://blog.csdn.net/YUICUI/article/details/125379562 这个解决方法不适用)

iOS 端:
第一步:在定位 iOS 手机查找元素的时候,请先在 iOS 手机上安装 wda 应用,请参考:https://testerhome.com/topics/34299
安装完成之后,脱离 mac 电脑,换成 windows 电脑
第二步:Windows 安装配置 tidevice
1、打开 cmd,输入命令: pip3 install -U "tidevice[openssl]",如图表示安装成功

2、查看 tidevice 版本号验证是否安装成功,打开 cmd,输入命令:tidevice version 或 tidevice -v,如图

3、列出连接的设备,打开 cmd,输入命令:tidevice list 和 tidevice list --json,如图

4、应用管理常用命令

(1)安装应用:tidevice install example.ipa
(2)指定设备安装:tidevice --udid $UDID install https://example.org/example.ipa
(3)卸载应用:tidevice uninstall com.example.demo
(4)启动应用:tidevice launch com.example.demo
(5)停止应用:tidevice kill com.example.demo
(6)查看已安装应用:tidevice applist
(7)查看运行中的应用:tidevice ps 或tidevice ps json output as json

第三步:用 windows 开始定位:
打开终端 1,启动 WDA:
tidevice wdaproxy -B com.xxx.xxx.WebDriverAgent.Runner --port 8200,
如下图,启动 wda 成功

打开终端 2,转发请求到手机:
tidevice relay -x 8100 8100
命令执行之后,如下图,转发成功

浏览器打开http://localhost:8100/,如下图,转发成功:

打开终端 3,启动 weditor:
python3 -m weditor
命令执行成功后会自动调用浏览器打开地址http://localhost:17310/
选择目标设备 iOS
点击 dump hierarchy
运行成功即可

参考文献:https://github.com/alibaba/web-editor

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册