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

1. 前言

最近有些小伙伴来问我们,能不能让设备运行一些自动化脚本后,给它执行重启操作,之后再自动连接上这台设备,继续执行一些自动化脚本。

答案当然是可以的,今天我们就从一个简单的小例子来看一下这个自动化场景吧。(PS:文末可以获得今天的练手脚本哦~)

2. 关于连接重启设备的实操案例

1)实操案例演示

这个实操例子,大致的流程是:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.core.android.android import *

auto_setup(__file__)

dev = connect_device("android://127.0.0.1:5037/QV720MVQ52")

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

# 简单测试网易云音乐APP
def simple_test():
    clear_app("com.netease.cloudmusic")
    start_app("com.netease.cloudmusic")

    sleep(1.0)

    poco("com.netease.cloudmusic:id/agree").click()
    sleep(1.0)
    poco("com.netease.cloudmusic:id/permissionGrant").click()
    sleep(1.0)
    poco("com.sonymobile.cta:id/permission_allow_button").click()
    sleep(1.0)

    wait(Template(r"tpl1667356693271.png", record_pos=(0.0, -0.688), resolution=(1080, 2520)),timeout=30)

    poco("com.netease.cloudmusic:id/agreeCheckbox").click()
    poco("com.netease.cloudmusic:id/trial").click()
    sleep(1.0)

# 简单测试后让设备重启
simple_test()
dev.shell("reboot")
sleep(60.0)

# 这里执行重启后的自动化操作
log("这里开始执行重启后的自动化操作")

# 重新连接设备
connect_device("android://127.0.0.1:5037/QV720MVQ52")

# 给设备解锁
android = Android("QV720MVQ52")
android.unlock()
swipe([552, 2407],[543, 664])

# 重新初始化Android poco并进行一些自动化测试
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
sleep(3.0)
simple_test()

2)Airtest 封装的 shell 接口

在上述脚本中,我们在执行重启操作的时候,用到了 Airtest 封装的 shell() 接口,实际上脚本里面的 dev.shell("reboot") ,就是执行我们熟知的 ADB 指令 adb shell -s 手机序列号 reboot

当然,Airtest 还有很多常用的封装好的 ADB 接口,可以参考我们往期推文测试人员一定要懂的 ADB 操作,赶紧来看一看~

3)设备重启后需要重新连接设备/初始化 poco

另外,使用 Airtest 脚本让设备重启之后,Airtest 并不会再主动连接上重启后的设备,所以我们需要在设备重启之后,再重新使用 Airtest 脚本去连接上这台设备,之后再执行相关的自动化操作。

另外要注意的是,如果我们的自动化操作里面,包含 poco 操作,那么设备重启之后,除了连接设备,还要重新初始化 poco。

4)如何给重启后的设备解锁

设备重启之后,我们还有可能遇到设备锁屏的问题,为了保障后面自动化脚本的顺利执行,在进入自动化测试内容之前,我们需要给设备解锁屏幕。

大部分情况下,使用 Android.unlock() 即可,但是也有些设备,解锁后,需要增加一个从底部向上滑的动作,来进入到手机桌面,就像我们示例脚本所演示的那样。

3. 拓展 - 关于主动断开设备连接

上文说到如何主动连接重启后的设备,这里我们补充 1 个小知识点,就是如何主动断开连接的设备。

举个应用场景,假设,我们当前连接了多台设备进行测试,一段时间后,其中 1 台设备已经测试完毕,后面都用不上了,这时候我们可以用 Airtest1.2.7 新增的接口 dev.disconnect() 来主动断开这台设备的连接。

dev = connect_device("android:///")
dev.disconnect()

这个方式最大的好处,就是能帮助我们主动释放掉一些后面测试不会再用到的资源,比如一些 adb 连接等。

4. 小结

今天的内容,主要讲解了一个主动连接重启后设备的小案例,另外还拓展了下,如何主动释放设备连接。感兴趣的同学可以关注我们,我们会持续分享各种自动化的小案例~


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

官方答疑 Q 群:117973773

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


↙↙↙阅读原文可查看相关链接,并与作者交流