Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?

简介: Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?

此文章来源于项目官方公众号:“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


相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
1月前
|
jenkins 持续交付
Jenkins自动化部署脚本
Jenkins自动化部署脚本
31 0
|
1月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
47 1
|
6天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
13 0
|
19天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
1月前
|
运维 监控 Linux
linux脚本自动化运维任务
Linux自动化运维通过脚本提升效率,涵盖服务管理(启停服务、异常恢复)、系统监控(资源警报)、日志管理(清理分析)、备份恢复、补丁更新、自动化部署(如Ansible)、网络管理、定时任务(cron)和故障排查。结合shell、Python及工具,形成高效运维体系。
24 3
|
1月前
|
存储 Unix Shell
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
45 0
|
1月前
|
监控
通过Lua脚本实现禁止员工上班玩游戏的软件的自动化任务管理
使用Lua脚本,企业可以自动化管理员工行为,防止上班时间玩游戏。Lua是一种轻量级脚本语言,适合编写监控任务。示例脚本展示了如何检测工作时间内员工是否玩游戏,并在发现时执行相应操作,如关闭游戏或发送警告。此外,另一脚本演示了如何将监控数据通过HTTP POST自动提交到网站,以实现有效的行为管理。这种解决方案灵活且可定制,有助于提升工作效率。
124 1
|
1月前
|
数据采集 数据处理 开发工具
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
|
1月前
|
前端开发 Java 测试技术
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
【2月更文挑战第14天】《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程) 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏哥搭建好的环境中创建首个完整的自动化测试脚本,让小伙伴或者童鞋们提前感受感受,也是为了激起大家的学习兴趣。宏哥的个人经验是:自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。
42 1
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
|
1月前
|
数据采集 测试技术 Python
Python自动化脚本的魅力与实践
Python自动化脚本的魅力与实践
54 0

热门文章

最新文章