前言很早以前,我用uiautomator+JAVA实践过Android App自动化测试,不过今天要提的不是uiautomator,而是uiautomator2 。听起来uiautomator2像是uiautomator的升级版,但是这两款框架仅仅是名字上比较相似,实际上没有任何关联 。
一、uiautomator/uiautomator2的前生今世项目地址:
https://github.com/openatx/uiautomator2
1.官方文档介绍2.梳理一下脉络
- 先有的谷歌uiautomator,但是只支持java;
- 后来一个名为hexiaocong的开发者基于uiautomator封装了Python/ target=_blank class=infotextkey>Python版本,支持python代码运行;
- 而受其启发,uiautomator2作者开发了uiautomator2 。所以它们的诞生顺序应该是:uiautomator(谷歌版)-->uiautomator(python版)-->uiautomator2
支持语言
特点
uiautomator
java
谷歌开源,仅支持Android
xiaocong/uiautomator
python
开源,仅支持Android
uiautomator2
python
开源,仅支持Android
二、uiautomator2简介1.项目组成
- uiautomator-server:主服务
- minicap:实现实时屏幕投屏,以及实时截图
- minitouch:用于精确实时控制设备
- atx-agent:运行在设备上的驻守程序,go开发,用于保活设备上相关的服务
- weditor:类似于uiautomatorviewer,专门为本项目开发的辅助编辑器
文章插图
1)各部分职责
- Python:编写脚本,向移动设备发起http请求;
- 移动设备:运行了封装了uiautomator2的http服务,解析python脚本发起的请求,并转化成uiautomator2可识别的代码;
- 移动设备上运行atx-agent守护进程,随后atx-agent启动uiautomator2服务,默认7912端口进行监听;
- 在PC上编写python脚本并执行(相当于发送 HTTP 请求到移动设备的 server 端);
- 移动设备通过 wifi 或 USB 接收到 PC 上发来的 HTTP 请求,执行指定的操作,从而操作移动设备;
pip install uiautomator2pip install -U weditor# 安装weditor
2.初始化设备python -m uiautomator2 init
初始化成功会出现如下提示文章插图
当PC或linux服务器连接了多台adb device的情况下,“python -m uiautomator2 init”默认初始化的是所有设备,若指定设备初始化,则需使用“--serial”参数:
python -m uiautomator2 init --serial $SERIAL# $SERIAL为手机序列号,可通过adb devices查看
3.init时都干了啥?执行“python -m uiautomator2 init”命令,会自动往手机上安装一堆东西:- app-uiautomator.apk
- app-uiautomator-test.apk
- atx-agent
- minicap
- minitouch
https://github.com/openatx/uiautomator2/wiki/Manual-Init
文章插图
四、基础操作1.连接设备uiautomator2提供了3种连接方式
1)通过WiFi连接
import uiautomator2 as u2d = u2.connect('10.0.0.1') # alias for u2.connect_wifi('10.0.0.1')print(d.info)
2)通过USB连接import uiautomator2 as u2d = u2.connect('123456f') # alias for u2.connect_usb('123456f')print(d.info)
3)通过ADB WiFi连接import uiautomator2 as u2d = u2.connect_adb_wifi("10.0.0.1:5555")# 等同于# + Shell: adb connect 10.0.0.1:5555# + Python: u2.connect_usb("10.0.0.1:5555")
2.命令行工具1)截图uiautomator2 screenshot test.jpg
2)获取当前APP报名及Activityuiautomator2 current
3)卸载应用uiautomator2 uninstall <package-name> # 卸载一个包uiautomator2 uninstall <package-name-1> <package-name-2> # 卸载多个包uiautomator2 uninstall --all # 全部卸载
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 虚拟眼镜|全球首款AR隐形眼镜要来!已开启佩戴测试
- 苹果|乔布斯的苹果Apple-1原型机被拍卖 成交价高达460万元
- 如何搜索 WhatsApp 聊天消息
- App|苹果修图软件Pixelmator Photo涨价离谱:买断价格暴涨7倍
- 小米|小米智能工厂上《新闻联播》:全自动化生产 年产百万台手机
- 阿里巴巴|又一个被阿里收购的APP:没落了
- 苹果|看 史上最贵台式机!苹果Apple-1被卖 这售价能在上海等买套房
- 搜狗|距离搜狗搜索APP停服还不到一个月 搜狗游戏中心宣布下线
- 苹果|郭明錤:Apple Watch 8越南出货的比重会提升到60-70%
- 3-6岁儿童智商测试题 儿童智商测试题