uiautomator2是一个python的用来自动化操作手机的库,可用于APP自动化测试。就笔者的使用体验,比appuim更稳定、易用。本文以大家最常用的APP:微信为例子,记录uiautomator2的常见用法,便于自己和读者查阅。如果你觉得本文有用,还请收藏支持一下。
为方便查阅,环境配置及安装放在最后。
有问题也欢迎联系我:hausahan@gmail.com,问题解决后我会将问题添加在常见问题中。
- 文末附实用APP测试脚本编写模板
目录
常见用法及技巧
连接设备
在终端输入:adb devices,可以获取连接了电脑的手机名称。
另外,使用
adb shell dumpsys window | grep mCurrentFocus # Linux
adb shell dumpsys window | findstr mCurrentFocus # Windows
可以获取当前屏幕显示的APP的包名。
使用如下代码连接到手机:
class Phone:
def __init__(self, deviceName, appName):
self.deviceName = deviceName
self.appName = appName
self.d = u2.connect_usb(deviceName)
打开APP
使用包名打开
例如我们要打开微信,可以使用上面的命令获取微信的包名,是:com.tencent.mm,然后在代码中打开:
class Phone:
def __init__(self, deviceName, appName):
self.deviceName = deviceName
self.appName = appName
self.d = u2.connect_usb(deviceName) # connect to mobile
self.d.app_start(appName) # open the app which the package name is [appName]
if __name__ == '__main__':
# Config
deviceID = '9a9abd39' # mobil device name: adb devices
appID = 'com.tencent.mm' # app package name: adb shell dumpsys window | grep/findstr mCurrentFocus
phone = Phone(deviceID, appID)
回到主屏幕使用text打开
如图,我们可以使用定位text的功能,在安卓主屏幕打开app:
到我们的代码中就是将原来的self.d.app_start(appName)改为self.d(text='工作专用').click()
介绍第两种方法是因为,有时候会出现使用包名不能打开APP的情况,比如APP有分身,那么两个app的包名就会是一样的,打开很不方便。或者偶尔会uiautomator2抽风打不开之类的情况,使用text打开一般会更方便。
元素定位
text
text定位是最简单最常用的,使用方法如下:
屏幕如下时,想要点击的元素又是实时生成没有固定的ID,就可以使用这样的代码来点击:

# coding:utf-8
import uiautomator2 as u2
class Phone:
def __init__(self, deviceName, appName):
self.deviceName = deviceName
self.appName = appName
self.d = u2.connect_usb(deviceName) # connect to mobile
self.d(text='工作专用').click() # 点击打开微信分身
def doTest(self):
self.d(text='月亮').click() # 点击想要打开的聊天框
if __name__ == '__main__':
# Config
deviceID = '9a9abd39' # mobil device name: adb devices
appID = 'com.tencent.mm'

本文详细介绍了如何使用uiautomator2库进行微信APP自动化测试,包括设备连接、APP打开、元素定位、常见操作和解决加载问题的技巧,以及常见安装问题和环境配置。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



