首先在通过python去调用uiautomator2, 所以理所当然需要安装uiautomator2的库。安装方式如下:
pip install --pre uiautomator2
pip install pillow
注:pillow主要的作用是用于截图,如果不需要的伙伴,当然就不用理会它。
所谓的初始化就是需要在手机上安装 uiautomator-server,atx-agent,openstf / minicap,openstf / minitouch 程序。
将手机链接到电脑(我直接使用的模拟器)
python -m uiautomator2 init
如果嫌弃比较慢的话,可以用国内的镜像
python -m uiautomator2 init -mirror
安装完成后,设备上会多一个uiautomator的应用。
如果以上安装失败的话,那我们还可以手动安装:
python -m uiautomator2 init
当出现
代表openstf / minitouch和openstf / minicap已被安装到我们手机上,接下来,当然我们会看到app-uiautomator。apk(1.1.4)下载失败,此时不要惊慌,因为我们还有后招。
首先安装:uiautomator-server
传送阵:https://github.com/openatx/android-uiautomator-server/releases
对于uiautomator-server的安装,我们需要下载如下:
下载app-uiatomator.apk和app-uiautomator-test.apk这两个程序,然后安装到手机上。
其次安装atx-agent
传送阵:https://github.com/openatx/atx-agent/releases
atx-agent包的安装,将atx-agent_0.4.8_linux_armv7.tar.gz 解压出atx-agent文件,然后打开控制台(cmd啦)
$ adb push atx-agent /data/local/tmp
$ adb shell chmod 755 /data/local/tmp/atx-agent
# launch atx-agent in daemon mode
$ adb shell /data/local/tmp/atx-agent server -d
atx-agent启动后的默认监听的端口是7912。
到此,我们的uiautomator2这个环境就搭建好了。
我们除了能够使用Android SDK自带的uiautomatorviewer来定位元素,不过这要求手机必须以USB的方式连接PC。然而,openatx提供了另外一个工具weditor ,这个工具可以通过手机IP地址链接到手机,也可以通过USB的方式链接到手机。然后显示手机界面,以供用户定位,还能生成代码。是不是很NB,是不是很强大。
pip install --pre --upgrade weditor
注:Windows系统可以使用命令在桌面创建一个快捷方式 python -m weditor --shortcut
python -m weditor
我们注意到在weditor页面上方有这么一个可输入的地方,
# -*- coding: utf-8 -*-
import uiautomator2 as ui2
d = ui2.connect('127.0.0.1:21503')
d.click(0.167, 0.16)
d.click(0.761, 0.541)
d.click(0.761, 0.541)
d(resourceId="com.dd.soleearrsafe:id/et_account").set_text("2300")
d(resourceId="com.dd.soleearrsafe:id/et_pwd").set_text("a1111111")
d.click(0.496, 0.32)
d.click(0.729, 0.571)
d.click(0.749, 0.562)
以上点击的坐标标都是直接从Weditor中复制过来的,但建议大家在使用时直接使用其它的定位方式。
【常用的定位方式】
ResourceId定位: d(resourceId=“com.smartisanos.clock:id/text_stopwatch”).click()
Text定位 d(text=“秒表”).click()
Description定位 d(description="…").click()
ClassName定位 d(className=“android.widget.TextView”).click()
定位方式还有多种,详情可以阅读:uiautomator2代码
【部分方法】
#启动App:
d.app_start("com.huawei.settings")
#long click:
d(text="Settings").long_click()
#等待元素的出现:
d(text="Settings").wait(timeout=10.0)
#截图:
d.screenshot("home.jpg")
#获取图层信息:
xml = d.dump_hierarchy()