UIautomator2:APP自动化测试方法与小技巧记录(文末附实用APP测试脚本编写模板)

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

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'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值