一、Airtest简介
1、Airtest介绍
Airtest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,适用于游戏和应用程序。
2、Airtest特点
- 跨平台:Airtest几乎可以在所有平台上执行游戏和App的自动化
- 易操作:使用图像识别技术来定位UI元素,无需嵌入任何代码即可对游戏和应用进行自动化
- 可扩展性:通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本
- GUI工具:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本
3、Airtest能做什么
- 游戏测试:借助图像识别和UI层次结构,支持所有游戏引擎和应用,多平台,使用方便
- Android测试:Android源生应用测试的测试过程中,Airtest可以发挥至关重要的作用,即插即用
- Winodws测试: 支持Windows应用,一次编写,跨平台运行
- ios测试:Airtest支持对ios进行方便快捷的测试,可以通过Poco来快捷获取ios设备页面中的原生元素的位置和信息
- Web测试:基于Chrome Devtools Protocol协议,自动录制生成selenium脚本,精确定位与操作界面元素
4、Airtest搭建方式
(1)python
- 命令:pip install airtest
- 说明:安装python的AirTest库,通过python代码直接调用AirTest库的Api方法
- 提示:此种方式,需要一定python代码基础
(2)GUI工具(AirtestIDE)
- 说明:AirTestIDE工具自带python环境,无需单独安装(支持3.0≤Python≤3.9)
- 提示:使用工具可以录制操作,也可以手动编写调用api
二、AirtestIDE基本使用
1、安装使用
官网下载:http://airtest.netease.com/
启动方式:
程序界面:
2、连接安卓模拟器(以连接夜神模拟器为例)
(1)打开AirtestIDE和夜神模拟器
(2)打开夜神模拟器的开发者模式,启动USB调试模式(默认会打开)
(3)使用adb连接夜神模拟器和AirtestIDE
adb connect 127.0.0.1:62001 # 夜神模拟器的端口号是62001
- Use Javacap:解决连接黑屏问题
- Use ADB Orientation:如果勾选第一个解决不了黑屏问题,就勾选这个进行补充
- Use ABD Touch:发送adb命令开点击屏幕,效果不好,不建议勾选
注意:由于夜神模拟器和AirtestIDE都自带有adb,所以在连接之前最好使用同一个adb版本(直接替换其中一个就行),否则会出现连接不稳定容易断开的问题
3、运行脚本
- 运行脚本:
- 运行单行代码:(选中要运行的代码,右键运行)
4、图像识别扩展
双击选择要编辑的图片,可以更改匹配度,操作位置
- filename:图片名称
- threshold:匹配度,匹配度越高匹配的准确性越高,为了效率匹配度不应该过高
- target_pos:操作位置,如上图所示图片有9个操作位置,通过更改数字改变操作位置
- rgb:颜色匹配,Airtest为了加快匹配效率默认是灰度匹配,当匹配不到时可以勾选加上颜色匹配
- scale_max:调节匹配的最大范围,默认值800, 取值范围 [700 , 2000],截图非常小的时候可以尝试调大scale_max
- scale_step:控制搜索步长,代表匹配时搜索的精细程度,默认0.01,取值范围 [0.001, 0.1],步长越小越容易搜索到,不过会增加匹配时间,降低效率
5、touch方法
- 作用:触摸动作
- 常用参数:
- v:触摸对象图像或坐标
- times:触摸次数,默认1次
- duration:触摸时间,默认0.01秒
6、wait方法
- 作用:等待某个元素出现,如果出现返回元素的中心点坐标,否则抛出TargetNotFoundError异常
- 常用参数:
- v:图片
- timeout:等待超时,默认找20秒
- interval:每次匹配的时间间隔
- 拓展:可以与touch方法配合使用,touch(wait(图片))
7、swipe方法
- 作用:滑动,从屏幕的一个位置滑动到屏幕另一个位置
- 常用参数:
- v1:图片或者坐标(x,y)
- v2:图片或者坐标(x,y),从v1滑到v2
- vector:[x,y]录制时自动生成,记录了屏幕中的滑动比例,向右为X轴正向,向下为Y轴正向
8、text方法
- 作用:输入文本操作
- 常用参数:
- text:要输入的文本(注:输入的位置为当前页面默认焦点元素一般配合touch一起使用)
- enter:完整输入后自动执行Enter操作,默认为True
注意:输入操作只能对页面上光标所在的位置处输入
9、keyevent方法
- 作用:模拟键盘按键输入,支持键码如:3为home键
- 常用参数:
- keyname:固定键名或键码,参考:https://blog.csdn.net/feizhixuan46789/article/details/16801429
10、snapshot方法
- 作用:截取当前屏幕图片,可以在测试报告显示
- 常用参数:
- Filename:保存截屏为指定文件
- msg:描述测试点,可以在HTML报告中呈现
11、sleep方法
- 作用:暂停时间
- 常用参数:
- secs:延迟时间(s),默认1.0s
12、assert_exists方法
- 作用:断言,判断页面存在元素
- 常用参数:
- v:图片(要判断页面是否存在元素)
- msg:描述测试点
- return:找到图片则返回图片中心点坐标,否则将 raise AssertionError
13、assert_not_exists方法
- 作用:断言,判断页面不存在元素
- 常用参数:
- v:图片 (注:判断当前页面不存在图片元素,不存在通过,存在失败)
- msg:描述测试点(测试报告中显示)
14、assert_equal方法
- 作用:判断第一个值与第二个值相等
- 常用参数:
- first:第一个值
- second:第二个值
- msg:描述此断言语句对应的测试点内容
15、assert_not_equal方法
- 作用:判断第一个条目与第二个条目不相等
- 常用参数:
- first:第一个值
- second:第二个值
- msg:描述此断言语句对应的测试点内容