自动化测试工具:Airtest入门教程

news2024/11/23 7:51:08

目录

1.什么是Airtest?

2.AirtestIDE下载安装

3.如何开始使用

4.Airtest入门特例教程

5.总结


1.什么是Airtest?

Airtest是一款基于 Python 的、跨平台的UI自动化测试框架。因为它基于 图像识别 的原理,所以适用于所有 Android、 iOS和 Windows 应用。因此,不论是手机上的app还是游戏,或者是Windows电脑上面的应用或者游戏等等,都可以用Airtest框架。

 学习成本低,上手编写脚本快,入门使用无需编程代码知识,即可快速完成大量测试脚本编写。此外当常规UI自动化无法或者很难识别定位元素时,也可利用Airtest图像识别的特性,来解决自动化测试难题。最后Airtest基于Python,写出来的所有脚本都是Python代码,除了入门级使用之外,也可以进一步使用python做扩展和二次开发,对测试开发同学非常友好。

官网地址:Airtest Project (netease.com)

官方文档:Home - 欢迎使用 - 《Airtest v1.2 中文文档》 - 书栈网 · BookStack

  • 跨平台: Airtest可以在几乎所有平台上执行游戏和App的自动化。
  • 一次编写,随处运行: Airtest提供了跨平台的API,囊括了应用安装、模拟输入以及断言等。由于使用图像识别技术来定位UI元素,因此无需嵌入任何代码即可对游戏和应用进行自动化操作。
  • 可扩展性: 通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本。提供的HTML报告包含了详细操作步骤和截屏,能够迅速定位到失败点。同时,网易也提供了 Airlab 云测试平台服务。
  • AirtestIDE: AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本。 AirtestIDE提供了完整的自动化工作流程支持:录制脚本->真机回放->生成报告

2.AirtestIDE下载安装

进入官网,Windows 64位系统直接点击下载按钮下载WINDOWS(64BIT)版本即可:

如果是Mac,可以点击“其他平台版本”,下载Mac版本:

下载后纯绿色版,无需安装,直接解压文件,在解压的文件夹中找到AirtestIDE.exe, 运行即可:

 注册登录账号那一步可以点击“Skip”跳过,不登录同样可以正常使用。进入后页面如下:

3.如何开始使用

对于刚入门,建议使用 AirtestIDE 来帮助编写自动化测试脚本。熟练上手 Airtest 和 poco 以后,如果有需要的话,则可以尝试脱离IDE来跑测试脚本,比如在本地命令行上运行,比如在其他Python编辑器,比如pycharm上运行等等。

在上述步骤我们已经下载了对应的 AirtestIDE

借助IDE界面左侧的Airtest辅助窗,我们可以对连接上的设备进行一些模拟操作,比如点击、滑动、截图、长按、输入文本等等。

而借助poco辅助窗,我们则可以看到设备的UI树,然后我们选中某个UI控件,就可以对这个选中的控件进行各种操作。

 

特别注意:因为 Airtest 和 poco 都是基于 python 语法的,所以我们编写的测试脚本都应该符合 python 语法 

4.Airtest入门特例教程

   4.1 连接设备:

比如测试需求是:搜索指定歌曲:悬溺,进行播放。我们先来看一下最终用airtest实现的效果:

airtest自动化测试脚本实例-CSDN直播

1、我们以自动化测试QQ音乐为例,先启动QQ音乐。然后回到Airtest IDE,新建点击“窗口”菜单,勾选上“Devices”, 点击“Windows窗口连接”的连接桌面图标,如下图:

2、连接成功后,会发现左侧“Airtest辅助窗”下方的按钮都变为了可点击状态。鼠标悬停在对应的按钮上,会显示按钮的参数使用说明,如下图:

3、然后点击菜单栏的“+”号,新建“.air Airtest项目”,输入项目名称,IDE会自动导包初始化脚本,如下图: 

4、这个时候切换到QQ音乐窗口,然后缩小Airtest IDE窗口的大小,目的是让你可以使用“Airtest”辅助窗下面的各个功能按钮截取到QQ音乐上对应操作的图片:

 

5、接下来就非常简单了,使用“Airtest”辅助窗下面的各个功能即可快速实现你要测试的场景。Airtest常用按钮说明:

touch:点击操作
text: 输入文本操作
sleep:睡眠操作,单位是秒
exists: 是否存在,返回true or false,用于编写逻辑判断代码时使用
assert_exists: 断言是否存在,用于测试断言使用
snapshot:截屏并保存为文件

   4.2 具体测试场景案例: 

比如测试需求是:搜索指定歌曲 悬溺 ,进行播放。

1、第一步是:点击搜索框。在Airtest IDE中点击touch按钮,框选上QQ音乐搜索框图片,选完图片后可以看到IDE中脚本已经生成:

2、第二步:输入歌曲名字“悬溺”并执行搜索操作。这一步直接点击Airtest IDE中“text”按钮,在弹窗中输入文字“悬溺”,脚本就生成了: 

 输完文字后,点击搜索图标执行搜索操作: 

3、第三步:点击悬溺,进行播放。touch框选上图片: 

但是touch只是鼠标单击,如何实现双击效果呢?鼠标移动touch上,可以看到它有times函数,默认是点击1次,我们将times设置为2:

 另一种解决方案是:使用另外一个函数double_click,则会触发双击效果:

 

注意:由于搜索出来有很多版本的“悬溺”歌曲,因此有很多其他版本的“悬溺”歌曲图片和我们截取的图片相似。而airtest图片识别默认的阈值是0.7,即70%匹配就认为匹配上了。

因此如果出现偶尔会点击到其他版本的“悬溺”歌曲的情况,可以在Airtest IDE中双击该图片,设置该图片的识别匹配阈值为0.9,提高为90%匹配才算匹配上,就可以解决这个问题:

 

5.总结

至此,脚本就编写完成了。总结一下测试步骤:
1、点击QQ音乐搜索框
2、输入歌曲名称:悬溺
3、点击搜索按钮
4、双击播放音乐

对应Airtest脚本如下:

结论:所见即所得,只需要按照你的测试步骤,鼠标框选对应的图片去录制一遍,即可实现自动化测试效果。整个过程很好理解,也不需要有什么编程知识,很快就可以上手自动化测试。赶紧去试试吧!

当然,实际工作中的自动化测试场景,会比上面的这个场景复杂得多,那么作为一款优秀的自动化测试软件,自然也是要具备应对更复杂场景的能力。本文只是作为入门篇,后面会再出进阶篇,介绍airtest的更多高级用法,解决可能会碰到的各类难题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安装(虚拟机安装;系统分区;Linux系统安装;远程登录管理工具)

文章目录 1. VMware虚拟机安装与使用2. 系统分区2.1 磁盘分区2.2 格式化2.3 硬件设备文件名2.4 分区设备文件名2.5 挂载2.6 文件系统结构2.7 总结 3. Linux系统安装4. 远程登录管理工具 1. VMware虚拟机安装与使用 VMware是一个虚拟PC的软件,可以在现有的操作系统上…

opencv 车牌号的定位和识别+UI界面识别系统

目录 一、实现和完整UI视频效果展示 主界面: 识别结果界面:(识别车牌颜色和车牌号) 查看历史记录界面: 二、原理介绍: 车牌检测->图像灰度化->Canny边缘检测->膨胀与腐蚀 边缘检测及预处理…

【C++11】future和async等

C11的future和async等关键字 1.async和future的概念 std::async 和 std::future 是 C11 引入的标准库功能,用于实现异步编程,使得在多线程环境中更容易处理并行任务。它们可以帮助你在不同线程中执行函数,并且能够方便地获取函数的结果。 在…

mysql(八)事务隔离级别及加锁流程详解

目录 MySQL 锁简介什么是锁锁的作用锁的种类共享排他锁共享锁排它锁 粒度锁全局锁表级锁页级锁行级锁种类 意向锁间隙临键记录锁记录锁间隙锁 加锁的流程锁的内存结构加锁的基本流程根据主键加锁根据二级索引加锁根据非索引字段查询加锁加锁规律 锁信息查看查看锁的sql语句 数据…

npm install sentry-cli失败的问题

1. 目前报错 2. 终端运行 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli3. 再安装 npx sentry/wizardlatest -i nextjs即可成功

信创测试的应用是什么

信创测试作为评估创意和创新项目的工具,为企业的发展提供了重要的支持和指导。它能够帮助企业降低风险、优化资源配置,促进创意与创新的迭代和改进。其具体应用,小编带大家一起来看看详情吧! 一、产品和服务创新 信创测试可以用于评估新产品和…

linux并发服务器 —— 动态库和静态库实战(一)

-E 预处理指定源文件 -S 编译指定源文件 -c 汇编指定源文件 -o 生成可执行文件 -I directory 指定Include包含文件的搜索目录 -g 编译的时候生成调试信息 -D 在程序编译时指定一个宏 -w 不生成任何的警告信息 -Wall 生成所有警告 -On n:0~3;表示编译器的优…

Kubernetes(K8S)使用PV和PVC做存储安装mysql

Kubernetes使用PV和PVC做存储安装mysql 环境准备什么是PV和PVC环境准备配置nfs安装nfs配置nfs服务端 创建命名空间配置pv和pvcpv的yaml文件pvc的yaml文件 部署mysql创建mysql的root密码的secret创建mysql部署的yaml部署mysql链接mysql外部链接内部链接 环境准备 首先你需要一个…

【路由器】小米 WR30U 解锁并刷机

文章目录 解锁 ssh环境准备解锁过程 刷入 mt798x uboot简介刷入流程 刷入 ImmortalWrt简介刷入流程 刷为原厂固件参考资料 本文主要记录个人对小米 WR30U 路由器的解锁和刷机过程,整体步骤与 一般安装流程 类似,但是由于 WR30U 的解锁 ssh 和刷机的过程中…

Docker打包JDK20镜像

文章目录 Docker 打包 JDK 20镜像步骤1.下载 jdk20 压缩包2.编写 dockerfile3.打包4.验证5.创建并启动容器6.检查 Docker 打包 JDK 20镜像 步骤 1.下载 jdk20 压缩包 https://www.oracle.com/java/technologies/downloads/ 2.编写 dockerfile #1.指定基础镜像,并…

MongoDB Long 类型 shell 查询

场景 1、某数据ID为Long类型,JAVA 定义实体类 Id Long id 2、查询数据库,此数据存在 3、使用 shell 查询,查不到数据 4、JAVA代码查询Query.query 不受任何影响 分析 尝试解决(一) long 在 mongo中为 int64 类型…

ARM-汇编指令

一,map.lds文件 链接脚本文件 作用:给编译器进行使用,告诉编译器各个段,如何进行分布 /*输出格式:32位可执行程序,小端对齐*/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm",…

ELFNet: Evidential Local-global Fusion for Stereo Matching

论文地址:https://arxiv.org/pdf/2308.00728.pdf 源码地址:https://github.com/jimmy19991222/ELFNet 概述 针对现有立体匹配模型面临可靠性和跨域泛化的问题,本文提出了Evidential Local-global Fusion(ELF)框架&…

十一、内部类(2)

本章概要 为什么需要内部类 闭包与回调内部类与控制框架 继承内部类内部类可以被重写么?局部内部类内部类标识符 为什么需要内部类 至此,我们已经看到了许多描述内部类的语法和语义,但是这并不能同答“为什么需要内部类”这个问题。那么&a…

几个nlp的小项目(文本分类)

几个nlp的小项目(文本分类) 导入加载数据类、评测类查看数据集精确展示数据测评方法设置参数tokenizer,token化的解释对数据集进行预处理加载预训练模型进行训练设置训练模型的参数一个根据任务名获取,测评方法的函数创建预训练模型开始训练本项目的工作完成了什么任务?导…

(AcWing) 任务安排(I,II,III)

任务安排I: 有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。 机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。 从时刻 0 开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。 另外&#x…

前端基础之滚动显示

marquee滚动标签 注&#xff1a;该标签已经过时&#xff0c;被w3c弃用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 使用样例&#xff1a; <marquee>这是个默认的marquee标签</marquee> 多条数据上下滚动&#xff1a; 代码如下&#xff1a; <body><mar…

MySQL每日一练--销售管理系统

一&#xff0c;创建数据库SaleSys 二&#xff0c;在数据库SaleSys中创建3张表 品牌信息表&#xff08;brand&#xff09; BrandId --品牌编号&#xff0c;整型&#xff0c;自动增长&#xff0c;主键BrandName --品牌名称&#xff0c;字符型&#xff0c; 唯一约束 商品表…

DBi Tech Studio Controls for .NET Crack

DBi Tech Studio Controls for .NET Crack Studio Controls for.NET为企业开发人员提供了一套全面的Windows布局和信息表示软件元素&#xff0c;面向搜索业务分析商业调度和UI表示控制器的程序员。Studio Controls for.NET包含17个免版税的.NET Windows窗体控件&#xff0c;用于…

【谷粒商城】开发篇:微服务架构搭建

项目架构搭建 创建代码仓库 步骤一&#xff1a;在gitee中创建代码仓库 步骤二&#xff1a;在IDEA中 clone 项目 clone 结果展示 项目微服务创建 商品服务、仓储服务、订单服务、优惠券服务、用户服务 商品微服务创建 商品微服务创建 使用 Spring Initializr 创建微服务 通过…