此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
最近有些小伙伴来问我们,能不能让设备运行一些自动化脚本后,给它执行重启操作,之后再自动连接上这台设备,继续执行一些自动化脚本。
答案当然是可以的,今天我们就从一个简单的小例子来看一下这个自动化场景吧。(PS:文末可以获得今天的练手脚本哦~)
这个实操例子,大致的流程是:
# -*- 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()
在上述脚本中,我们在执行重启操作的时候,用到了 Airtest 封装的 shell()
接口,实际上脚本里面的 dev.shell("reboot")
,就是执行我们熟知的 ADB 指令 adb shell -s 手机序列号 reboot
。
当然,Airtest 还有很多常用的封装好的 ADB 接口,可以参考我们往期推文测试人员一定要懂的 ADB 操作,赶紧来看一看~。
另外,使用 Airtest 脚本让设备重启之后,Airtest 并不会再主动连接上重启后的设备,所以我们需要在设备重启之后,再重新使用 Airtest 脚本去连接上这台设备,之后再执行相关的自动化操作。
另外要注意的是,如果我们的自动化操作里面,包含 poco 操作,那么设备重启之后,除了连接设备,还要重新初始化 poco。
设备重启之后,我们还有可能遇到设备锁屏的问题,为了保障后面自动化脚本的顺利执行,在进入自动化测试内容之前,我们需要给设备解锁屏幕。
大部分情况下,使用 Android.unlock()
即可,但是也有些设备,解锁后,需要增加一个从底部向上滑的动作,来进入到手机桌面,就像我们示例脚本所演示的那样。
上文说到如何主动连接重启后的设备,这里我们补充 1 个小知识点,就是如何主动断开连接的设备。
举个应用场景,假设,我们当前连接了多台设备进行测试,一段时间后,其中 1 台设备已经测试完毕,后面都用不上了,这时候我们可以用 Airtest1.2.7 新增的接口 dev.disconnect()
来主动断开这台设备的连接。
dev = connect_device("android:///")
dev.disconnect()
这个方式最大的好处,就是能帮助我们主动释放掉一些后面测试不会再用到的资源,比如一些 adb 连接等。
今天的内容,主要讲解了一个主动连接重启后设备的小案例,另外还拓展了下,如何主动释放设备连接。感兴趣的同学可以关注我们,我们会持续分享各种自动化的小案例~
Airtest 官网:https://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b
官方答疑 Q 群:117973773
呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~