用Airtest获取本地可用设备实现自动启动or关闭应用的小任务

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 用Airtest获取本地可用设备实现自动启动or关闭应用的小任务

网络异常,图片无法展示
|


1. 前言



在测试实践中,我们可能会经常遇到这样子的场景,xxx项目组周三上午10:00会发一个新的应用包,测试人员需要对这个新包进行一些测试,比如手工测试或者回归测试等等。


但是在测试之前,我们希望应用包发布之后,能一键自动安装到所有测试设备上,并且自动打开待测应用,待测试人员测试完所有设备之后,还可以一键关闭/删除应用。


今天我们就以这个测试场景为例,简单实现一个小任务:用Airtest获取本地可用设备实现自动启动或者关闭应用。


2. 任务思路



大致来说,这个任务分为以下部分的内容:


① 实现获取本地所有可用设备的方法

② 实现在设备上启动指定应用的方法

③ 实现在设备上关闭指定应用的方法

④ 实现在所有设备上启动指定应用的方法

⑤ 实现在所有设备上关闭指定应用的方法

⑥ 增加命令行入口,方便后续命令行启动任务和定时任务的实现


3. 获取本地所有可用设备



以本地连接的Android设备为例,Airtest连接Android设备的方式可以是:


connect_device("Android://127.0.0.1:5037/127.0.0.1:62001")
复制代码


本地Android设备的话,设备字符串的 Android://127.0.0.1:5037/ 这部分都是一样的,重点是获取最后的Android设备的序列号,像夜神模拟器的序列号 127.0.0.1:62001


那如何获取本地连接的所有Android设备的序列号呢,ADB给我们提供了实现方法:


adb = ADB()
device_list = adb.devices()
复制代码


网络异常,图片无法展示
|


执行后,我们会得到一个设备列表,里面是包含了设备序列号和设备状态的元组。


我们可以通过遍历这个设备列表,得到一个个的元组,然后获取元组里面的设备序列号,之后我们就可以很容易拼接出来Android的设备字符串,方便后续连接该设备病对设备做一些操作:


网络异常,图片无法展示
|


4. 实现在设备上启动或者关闭指定应用的方法



假设目标应用是网易云音乐,Airtest有封装好启动和关闭应用的API(分别是 start_appstop_app ),我们直接调用即可:


网络异常,图片无法展示
|


5. 实现在本地所有设备上启动或者关闭指定应用的方法



这里要结合我们实现的获取本地所有设备的方法,然后简单地使用for循环来遍历每一台设备,启动目标应用:


网络异常,图片无法展示
|


可以简单测试下效果:


网络异常,图片无法展示
|


6. 实现命令行入口,参数控制启动和关闭应用



这里我们可以实现用参数控制是启动应用还是关闭应用,或者是指定别的目标应用和设备等:


网络异常,图片无法展示
|


在项目目录下,按住shift+右键,打开终端窗口,简单测试下效果:


网络异常,图片无法展示
|


(让所有设备启动目标应用)


网络异常,图片无法展示
|


(让所有设备关闭目标应用)


7.小结



今天的小任务就实现到这里,在这个任务的基础上,我们还可以将其改造成定时任务,或者在批量启动/关闭的时候采用多进程等方式。

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
关系型数据库 数据库 数据安全/隐私保护
PostgreSQL安装和使用教程
PostgreSQL安装和使用教程
843 0
|
网络协议 安全 Shell
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
1870 0
如何在 SSH 客户端中强制使用 IPv4 或 IPv6?
|
存储 缓存 监控
解锁Vuex性能优化的秘密:让大型Vue应用如丝般顺滑,紧跟技术热点,体验速度与效率的双重飞跃!
【8月更文挑战第27天】Vuex是Vue.js应用程序的状态管理解决方案,它允许开发者集中管理组件间共享的状态。然而,在大型应用中,庞大的状态树可能会影响性能。本文介绍几种优化策略:1)精简状态树,避免存储不必要的数据并通过模块化降低复杂度;2)利用getters缓存计算结果以提高效率;3)通过actions处理异步操作,确保状态更新的同步性和逻辑清晰;4)在组件级别上减少不必要的重渲染;5)使用工具如Vue Devtools进行监控和调试。这些方法有助于提升应用的整体性能和用户体验。
273 0
|
机器学习/深度学习 人工智能 监控
阿里云的大数据计算引擎应用场景
阿里云的大数据计算引擎应用场景
|
资源调度 JavaScript
Element-ui快速入门
Element-ui是基于Vue.js的桌面端UI组件库,用于快速构建美观界面。以下是其快速入门步骤:1) 使用npm或yarn安装;2) 在main.js中引入样式和组件;3) 直接在Vue组件中使用Element-ui组件;4) 可根据需要定制主题样式。参照官方文档可了解更多组件和用法。
|
算法 语音技术 计算机视觉
【MATLAB】ALO蚁狮算法优化的VMD信号分解算法
【MATLAB】ALO蚁狮算法优化的VMD信号分解算法
608 0
【MATLAB】ALO蚁狮算法优化的VMD信号分解算法
|
JavaScript 前端开发 数据安全/隐私保护
【前端VUE】按钮显示隐藏
【前端VUE】按钮显示隐藏
|
关系型数据库 MySQL Java
12-微服务技术栈(高级):容器引擎Docker
在前面的学习中,我们掌握了微服务的服务注册与发现(nacos)、配置中心(nacos)、远程服务调用(feign)、网关(gateway),同时借助Idea编译工具多次完成本地服务启动、部署和验证。在微服务架构中,不会再像传统那样单个单个部署服务器,而是会借助Docker进行批量的容器化部署。
1315 0
|
SQL 关系型数据库 MySQL
[Python]使用Python操作MySQL数据库(pymysql)
[Python]使用Python操作MySQL数据库(pymysql)