uiautomator2 使用Python测试 Android应用

安装

安装uiautomator2

pip install --pre uiautomator2

pip install pillow

安装完成以后手机上会出现一个ATX黄色小车icon的APP。

连接

手机使用数据线连接上电脑,并打开调试模式,使用下面的命令验证是否连接电脑成功

adb devices

uiautomator2 使用Python测试 Android应用如图所示表示连接成功

测试

编写脚本验证(ui2同appium一样可以通过两种方式连接,但是这里只讲USB连接)

import uiautomator2 as u2

# usb连接(括号内填写的是你adb出来的手机的名称)
d = ui2.connect_usb('DWH9X17106W08374')
# wifi连接
# d = ui2.connect_wifi()
print(d.info)

定位元素

我们可以借助Android SDK自的uiautomatorviewer查看元素,这就要求手机必须以USB的方式连接PC,我前面使用的是WIFI连接进行连接的。所以,openatx提供了另外一个工具weditor 来解决这个问题。

GitHub地址:https://github.com/openatx/weditor

1、安装:

pip install --pre --upgrade weditor

2、使用:

python3 -m weditor

默认会通过浏览器打开页面:http://atx.open.netease.com/

uiautomator2 使用Python测试 Android应用

在页面左上角选择Android,输入设备名称(你adb出来的手机的名称),点击Connect按钮。

当我们操作完手机后,可以点击“Reload”按钮进行刷新,从而保持与设备上的界面保持同步。weditor 还可以帮我们生成代码。总之,你研究一下就会用了。

import uiautomator2 as u2
from time import sleep

d = u2.connect('192.168.31.234')

# 启动App
d.app_start("com.meizu.mzbbs")

# 搜索
d(resourceId="com.meizu.mzbbs:id/j0").click()

# 输入关键字
d(resourceId="com.meizu.mzbbs:id/p9").set_text("flyme")

# 搜索按钮
d(resourceId="com.meizu.mzbbs:id/tp").click()

sleep(2)

# 停止app
d.app_stop("com.meizu.mzbbs") 

app_start()和app_stop()用于启动和停止应用。

常用的定位方式:

  • ResourceId定位:
    d(resourceId="com.meizu.mzbbs:id/tp").click()

  • Text定位:
    d(text="精选").click()

  • Description定位:
    d(description="..").click()

  • ClassName定位:
    d(className="android.widget.TextView").click()

此文章改至虫师大佬的uiautomator2 使用Python测试 Android应用文章,我把前面的内容用自己的话描述了一下,希望后面的人能更加通俗易懂一些。欢迎加Q:1583141776 交流测试经验