此文章来源于项目官方公众号:“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. 小结
今天的内容,主要讲解了一个主动连接重启后设备的小案例,另外还拓展了下,如何主动释放设备连接。感兴趣的同学可以关注我们,我们会持续分享各种自动化的小案例~
AirtestIDE下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b