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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 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


相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
25天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
18天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
16天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
24天前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
21天前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
23天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
26天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
28天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
1月前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
64 2
|
1月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
80 3