AirtestProject 用 Airtest 获取本地可用设备实现自动启动 or 关闭应用的小任务

fishfish-yu · 2022年02月17日 · 1849 次阅读

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

在测试实践中,我们可能会经常遇到这样子的场景,xxx 项目组周三上午 10:00 会发一个新的应用包,测试人员需要对这个新包进行一些测试,比如手工测试或者回归测试等等。

但是在测试之前,我们希望应用包发布之后,能一键自动安装到所有测试设备上,并且自动打开待测应用,待测试人员测试完所有设备之后,还可以一键关闭/删除应用。

今天我们就以这个测试场景为例,简单实现一个小任务:用 Airtest 获取本地可用设备实现自动启动或者关闭应用。

2. 任务思路

大致来说,这个任务分为以下部分的内容:

① 实现获取本地所有可用设备的方法

② 实现在设备上启动指定应用的方法

③ 实现在设备上关闭指定应用的方法

④ 实现在所有设备上启动指定应用的方法

⑤ 实现在所有设备上关闭指定应用的方法

⑥ 增加命令行入口,方便后续命令行启动任务和定时任务的实现

3. 获取本地所有可用设备

以本地连接的 Android 设备为例,Airtest 连接 Android 设备的方式可以是:

connect_device("Android://127.0.0.1:5037/127.0.0.1:62001")

本地 Android 设备的话,设备字符串的 Android://127.0.0.1:5037/ 这部分都是一样的,重点是获取最后的 Android 设备的序列号,像夜神模拟器的序列号 127.0.0.1:62001

那如何获取本地连接的所有 Android 设备的序列号呢,ADB 给我们提供了实现方法:

adb = ADB()
device_list = adb.devices()

执行后,我们会得到一个设备列表,里面是包含了设备序列号和设备状态的元组。

我们可以通过遍历这个设备列表,得到一个个的元组,然后获取元组里面的设备序列号,之后我们就可以很容易拼接出来 Android 的设备字符串,方便后续连接该设备病对设备做一些操作:

4. 实现在设备上启动或者关闭指定应用的方法

假设目标应用是网易云音乐,Airtest 有封装好启动和关闭应用的 API(分别是 start_appstop_app ),我们直接调用即可:

5. 实现在本地所有设备上启动或者关闭指定应用的方法

这里要结合我们实现的获取本地所有设备的方法,然后简单地使用 for 循环来遍历每一台设备,启动目标应用:

可以简单测试下效果:

6. 实现命令行入口,参数控制启动和关闭应用

这里我们可以实现用参数控制是启动应用还是关闭应用,或者是指定别的目标应用和设备等:

在项目目录下,按住 shift+ 右键,打开终端窗口,简单测试下效果:

(让所有设备启动目标应用)

(让所有设备关闭目标应用)

7.小结

今天的小任务就实现到这里,在这个任务的基础上,我们还可以将其改造成定时任务,或者在批量启动/关闭的时候采用多进程等方式。

下期,我们会来看看怎么做定时任务,也就是 在无人值守的情况下,让它自动完成这个任务 ,感兴趣的同学可以关注我们,防止下期找不到我们哦~


Airtest 官网https://airtest.netease.com/
Airtest 教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册