python 3.6+、android 4.4+
uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。
GitHub地址:
https://github.com/openatx/uiautomator2
https://github.com/openatx/uiautomator2/blob/master/README.md
首先设备连接到PC,并能够adb devices发现该设备。
执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server,atx-agent,openstf / minicap,openstf / minitouch
最后提示success,代表atx-agent初始化成功。
注:如果安装完成后,在手机桌面上没有出现名为ATX的应用,说明没有安装成功。需要通过QQ将app传到手机上进行安装。
安装上图所示apk。
有了这个,方便我们快速的识别手机上的元素,方便写代码
安装好之后,就可以在命令行运行 weditor --help 确认是否安装成功了。
Windows系统可以使用命令在桌面创建一个快捷方式:
在windows cmd中执行上述命令后,会在桌面上创建一个快捷方式,如下图:
启动方法:
方法1.命令行直接输入 weditor 会自动打开浏览器,输入设备的ip或者序列号,点击Connect即可;
方法2.桌面上双击WEditor快捷方式即可;
方法3.命令行中执行 python -m weditor
启动后如下图:
调用uiautomator2的过程
- 配置手机设备参数,设置具体操作的是哪一台手机
- 抓取手机上应用的控件,制定对应的控件来进行操作
- 对抓取到的控件进行操作,比如点击、填写参数等。
设备连接方法,有两种:
python-uiautomator2连接手机的方式有两种,一种是通过WIFI,另外一种是通过USB。两种方法各有优缺点。
WIFI最便利的地方要数可以不用连接数据线,USB则可以用在PC和手机网络不在一个网段用不了的情况。
(1)通过WiFi,假设设备IP 192.168.0.107和您的PC在同一网络中
(2)通过USB, 假设设备序列是123456789F
在没有参数的情况下调用u2.connect(), uiautomator2将从环境变量ANDROID_DEVICE_IP获取设备IP。如果这个环境变量是空的,uiautomator将返回connect_usb,您需要确保只有一个设备连接到计算机。
检查并维持设备端守护进程处于运行状态:
注:该功能从3.0.0开始不可用。
打开调试开关:
安装应用,只能从URL安装:
启动应用:
停止应用:
停止所有正在运行的应用程序:
跳过弹窗,禁止弹窗:
获取设备信息:
获取应用信息:
推拉文件:
(1)将文件推送到设备
(2)从设备中拉出一个文件
关键事件:
(1)打开/关闭屏幕
(2)获取当前屏幕状态
(3)硬键盘和软键盘操作
(4)解锁屏幕
手势与设备的交互:
XPath:
UI对象有五种定位方式:
常见用法:
文章参考:UIAutomator2的使用 | Vicの博客
中文输入
1、set_text() 只能输入英文
2、输入中文要: 先切换为FastInputIME输入法,然后用 send_keys()