uiautomator2 + Python 测试Android APP

一、uiautomator2安装

首先在通过python去调用uiautomator2, 所以理所当然需要安装uiautomator2的库。安装方式如下:

pip install --pre uiautomator2

pip install pillow

注:pillow主要的作用是用于截图,如果不需要的伙伴,当然就不用理会它。

二、初始化

所谓的初始化就是需要在手机上安装 uiautomator-server,atx-agent,openstf / minicap,openstf / minitouch 程序。
将手机链接到电脑(我直接使用的模拟器)

2.1、通过命令方式安装
python -m uiautomator2 init

如果嫌弃比较慢的话,可以用国内的镜像

python -m uiautomator2 init -mirror

安装完成后,设备上会多一个uiautomator的应用。

2.2、手动安装

如果以上安装失败的话,那我们还可以手动安装:

第一步:执行如下命令:
python -m uiautomator2 init

当出现uiautomator2 + Python 测试Android APP_第1张图片
代表openstf / minitouch和openstf / minicap已被安装到我们手机上,接下来,当然我们会看到app-uiautomator。apk(1.1.4)下载失败,此时不要惊慌,因为我们还有后招。

第二步:你不让下载,那就只在自己动手单个安装这两个小家伙了:uiautomator-server , atx-agent**

首先安装:uiautomator-server

传送阵:https://github.com/openatx/android-uiautomator-server/releases

对于uiautomator-server的安装,我们需要下载如下:uiautomator2 + Python 测试Android APP_第2张图片
下载app-uiatomator.apk和app-uiautomator-test.apk这两个程序,然后安装到手机上。

其次安装atx-agent
传送阵:https://github.com/openatx/atx-agent/releases

uiautomator2 + Python 测试Android APP_第3张图片

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这个环境就搭建好了。

三、定位元素——weditor

我们除了能够使用Android SDK自带的uiautomatorviewer来定位元素,不过这要求手机必须以USB的方式连接PC。然而,openatx提供了另外一个工具weditor ,这个工具可以通过手机IP地址链接到手机,也可以通过USB的方式链接到手机。然后显示手机界面,以供用户定位,还能生成代码。是不是很NB,是不是很强大。

  1. 安装:
pip install --pre --upgrade weditor

注:Windows系统可以使用命令在桌面创建一个快捷方式 python -m weditor --shortcut

  1. 使用:
python -m weditor

浏览器就会自动打开一个页面
uiautomator2 + Python 测试Android APP_第4张图片

那么如何与手机链接起来呢:
在这里插入图片描述

我们注意到在weditor页面上方有这么一个可输入的地方,

  1. 这里可以填写手机的手机序列(adb devices),
  2. 可以填写手机的IP地址也可以填写手机的IP地址;但需要注意的是通过IP地址来识别手机,需要保证电脑能够ping通手机的IP地址
    在Connect中出现在这里插入图片描述,就算是链接成功了。
四、编写测试脚本
# -*- 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()

你可能感兴趣的:(APP测试)