利用Python与uiautomator2实现【手机群控】

利用Python与uiautomator2实现多设备自动化测试

引言

在移动应用测试中,自动化测试是一种提高测试效率和覆盖率的有效手段。本文将介绍如何使用Python语言结合uiautomator2库来实现对多个设备的并行自动化测试。

老规矩先放实现的效果

image-20240710105613069

环境准备

  • Python环境
  • 安装uiautomator2库:pip install uiautomator2
  • 确保设备已经通过USB调试模式连接到计算机,并且安装了adb工具。

原理解析

多设备并行测试的原理是利用Python的多线程或多进程能力,同时在多个设备上运行测试脚本,从而提高测试效率。

代码解析

1. 获取设备列表

def get_devices_list():
    """ 获取手机设备"""
    cmd = r'adb devices'
    pr = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    pr.wait()
    out = pr.stdout.readlines()  # 读取命令行输出
    devices = []
    for i in out[1:-1]:  # 忽略第一行和最后一行无用信息
        device = str(i).split("\\")[0].split("'")[2]  # 提取设备序列号
        devices.append(device)
    return devices

这个函数使用adb devices命令获取当前连接的设备列表。通过解析命令的输出,提取出每个设备的序列号。

2. 主要测试函数

def main(device):
    d = u2.connect(device)
    screen_width = d.info["displayWidth"]
    screen_height = d.info["displayHeight"]
    print(f'设备serial码:{device} ')
    print(f'屏幕宽度x高度:{screen_width} x {screen_height}')

这个函数接收一个设备序列号作为参数,使用uiautomator2库连接到该设备,并获取设备的屏幕宽度和高度信息,然后打印出来。

3. 多进程并行执行

if __name__ == '__main__':
    # 进程列表
    p_list = []
    devices = get_devices_list()  # 取得设备列表
    for device in devices:
        device = Process(target=main, args=(device,))  # 创建进程
        p_list.append(device)
    for p in p_list:
        p.start()  # 启动进程
    for p in p_list:
        p.join()  # 等待进程结束

这部分代码是程序的入口点。首先获取所有设备的列表,然后为每个设备创建一个进程,并将main函数作为目标函数,设备序列号作为参数。接着启动所有进程,并等待它们执行完成。

运行结果

image-20240710105613069

多线程与多进程

Python中的threading模块可以实现多线程,但由于全局解释器锁(GIL)的存在,多线程在CPU密集型任务中可能不会带来性能上的提升。而multiprocessing模块可以创建多个进程,每个进程有自己的Python解释器和内存空间,因此适合进行CPU密集型任务的并行处理。

注意事项

  • 确保所有设备都连接正常,并且已经开启USB调试模式。
  • 确保adb工具可以正常使用,并且设备已经通过adb授权。
  • 根据测试需求,可以在main函数中添加更多的测试逻辑。

结语

通过本文的介绍,你应该已经了解了如何使用Python结合uiautomator2库来实现多设备的并行自动化测试。这种方法可以显著提高测试效率,特别是在需要对大量设备进行测试时。希望本文对你有所帮助,欢迎在评论区交流更多的自动化测试技巧。

  • 21
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃宝护卫队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值