官方文档:
本文我们讲解下Airtest的使用,主要学习目标有以下几点:
(1)认识Airtest
(2)了解Airtest能做什么
(3)Airtest安装及环境搭建
(4)掌握Airtest图形化api使用
(5)Airtest实现APP电商自动化测试
(6)Airtest连接ios真机实现自动化测试

Airtest简介及环境搭建

1、Airtest简介
Airtest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,适用于游戏和应用程序。
特点:
(1)跨平台:Airtest几乎可以在所有平台上执行游戏和APP自动化
(2)易操作:使用图像识别技术来定位UI元素,无需嵌入任何代码即可对游戏和应用进行自动化测试。
(3)可扩展性:通过使用Airtest提供的命令行和Python API接口,可以轻松地在大规模设备集群上运行脚本
(4)GUI工具:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试脚本。
 
扩展:Airtest的3种图像算法SURFMatching、TemplateMatching和BRISKMatching 深度对比。
(1)模板匹配 TemplateMatching
  • 优点是速度很快,缺点是无法跨分辨率识别
  • 一定有相对最佳的匹配结果
  • 方法名:"tpl"
(2)特征点匹配
  • 跨分辨率识别
  • 不一定有匹配结果
  • 方法名列表:["kaze", "brisk", "akaze", "orb", "sift", "surf", "brief"]
特征点匹配算法的性能对比结论:
内存占用:kaze > sift > akaze > surf > brief > brisk > orb
CPU占用:kaze > surf > akaze > brisk > sift > brief > orb
运行时长:kaze > sift > akaze > surf > brisk > brief > orb
识别效果:sift > surf > kaze > akaze > brisk > brief > orb
 
2、Airtest能做什么
Airtest支持:Game、Windows应用、Andriod应用、iOS应用、web应用的自动化测试。
特点:
Game:借助图像识别和UI层次结构,支持所有游戏引擎和应用,多平台,使用方便。
Android:Android源生应用测试的测试过程中, Air test可以发挥至关重要的作用, 即插即用。
Wino dws:支持Windows应用, 一次编写, 跨平台运行。
iOS:Airtest支持对iOS进行方便快捷的测试,可以通过Poco库来快捷获取iOS设备页面中的原生元素的位置和信息。
Web:基于Chrome Devtools Protocol协议,自动录制生成selenium脚本, 精确定位与操作界面元素。
 
Airtest优点:
1)框架基于图像识别,UI和控件识别,操作简单,功能简洁。
2)对代码能力要求不高,容易上手。结合工具本身的脚本录制功能,开发脚本速度快,适合版本快速迭代的要求。
3)可引入Python第三方库,支持Python进行个性化脚本编程。
4)可一键生成测试报告,报告美观,清晰明了。
Airtest缺点:
1)最大的缺点是图像、控件定位不够准确,如果不同设备的尺寸、分辨率不同,或者图像的背景色变化,控件图案修改的话。
2) 因为是基于图像识别的框架,所以代码执行速度慢,容易造成图像识别不到。
总结:优点大于缺点,且图像识别准确度的问题有很多办法可以改善、提高。
 
3、Airtest库
Airtest有图像识别、Poco、selenium三大类库。
 
4、Airtest环境搭建
(1)Python
输入cmd打开命令行窗口,执行命令:pip install -U airtest
说明:安装Python的Airtest库,通过Python代码直接调用Airtest库的API方法。
提示:此方法需要有一定的Python基础。AirtestIDE内置了Python3.6.5,亲测Python3.6.5版本可以安装airtest。
(2)GUI工具
工具:AirtestIDE
说明:AirtestIDE工具自带Python环境,下载解压即可使用,免安装。
提示:使用工具可以录制操作,也可以手动编写调用API。
本次视频教程学习GUI工具。
(3)下载AirtestIDE
(4)解压
(5)启动
双击AirtestIDE.exe可执行程序即可。
(6)Airtest页面布局
 

Airtest与安卓模拟器进行连接

常用的安卓模拟器:网易的MUMU、夜神、雷电等。我们这里使用网易MUMU,直接下载安装到C:\Program Files\MuMu
1、准备工作
(1)打开开发者模式
一般安卓手机:进入设置—>系统(或关于手机)—>找到版本号,多点击几次,就可以开启开发者模式。
小康设备:首页下拉进入导航栏—>时间连续点击5次—>点击原生设置—>系统—>关于AIV—>版本号连续点击7次
说明:如果设备已经打开开发者模式,点击版本号会提示:您正处于开发者模式。
(2)打开USB调试模式
先打开开发者模式,进入开发人员选项,可开启USB调试。
注意:一定要选择USB配置:MIDI(打开文件传输)!!!
(3)连接设置
a.启动安卓模拟器
b.在Airtest窗口点击【刷新ADB】或【远程设备连接】
c.使用备用连接参数,设置兼容模式
AirtestIDE提供了3个备用的连接参数: Use javacap 、Use ADB orientation 和 Use ADB touch
① 第一个 Use javacap ,是给部分无法正常看到手机画面、minicap初始化失败 的手机或设备用的,所以模拟器看到黑屏、部分特殊的平板等设备可以考虑勾选这个选项。
② 第二个 Use ADB orientation 是 屏幕旋转 的,如果在安卓手机屏幕旋转方向检测有问题、或者是部分特殊的平板无法显示正确的屏幕方向时可以勾选。
③ 第三个 Use ADB touch 是 发送adb指令来点击屏幕 ,效果很差,速度也很慢,不建议勾选,只有在部分无法点击屏幕的特殊安卓设备上才需要使用(例如智能后视镜、特殊型号的平板等设备上) 正常情况下,手机都可以点击,如果无法被点击(比如小米设备),一般都是因为手机设置有选项漏了打开,特别是小米设备要注意 开启允许模拟点击 的设置。
 
(4)修改设备地址及端口号(因为真机或模拟器都分不同的厂商)
Airtest远程连接,默认展示的是网易MUMU的端口号。如果使用其他厂商的模拟器,需要修改端口号。
常用模拟器的默认IP地址和端口号如下:

Airtest图像库(Touch、脚本运行、测试报告)

1、学习目标
掌握touch方法应用
掌握脚本运行
掌握测试报告查看
理解图像识别扩展(位置、匹配度)
 
2、Airtest图像框架API查看参数信息
方法:将光标悬停到左侧栏API上,气泡显示调用该方法所需要传入的参数。
 
3、Touch方法
作用:触摸/点击动作
常用参数:
v : 点击对象的图像或坐标
times: 点击次数,默认是1
duration: 点击时间,默认是0.01秒
 
(1)需求:
使用Touch方法,点击启动小康桌面应用(电视家)
运行脚本测试是否成功
 
(2)需求实现步骤:
a、新建脚本类型选择
.air Airtest项目:生成一个【项目名称.air】的目录,目录下有一个【项目名.py】的文件
.py 纯Python(高级用户):生成一个纯Python的【项目名.py】的文件
 
两者区别和联系:
相同点:都是Python文件
不同点:脚本文件的初始化代码不用,一个无法看到默认值,另一个可以看到默认值并可以修改。
提示:Airtest自带Python解释器及标准库,无需单独安装Python。
 
b、使用Touch点击小康桌面应用(电视家)
左侧点击Touch
右侧拉选电视家icon图标
 
c、运行脚本
点击三角形的【运行】按钮,或者使用快捷键F5
停止运行:Shift + F5
运行单行代码:选中代码行,右键,选中并单击“只运行选中代码”
 
d、查看报告
方法1:点击菜单栏【运行】——>打开报告目录
方法2:右键脚本文件名称Tab——>打开报告文件目录
方法3:使用快捷键:Ctrl + L
方法4:cmd打开命令行窗口,进入脚本所在路径,执行如下命名:
airtest report D:\zxt\AirtestIDE\xiaokang.air\xiaokang2_auto_script.py --log_root D:\zxt\AirtestIDE\xiaokang.air\log --outfile D:\zxt\AirtestIDE\xiaokang.air\log\xiaokang2_auto_script.log\log.html --static_root D:\zxt\AirtestIDE\airtest\report --lang zh --export D:/zxt/AirtestIDE/xiaokang.air/log
方法5:右键脚本文件名称Tab——>导出报告
这种方法,可以将相对路径的图片资源和静态资源整个打包,后续发送给其他查看。
方法6:
# generate html report
from airtest.report.report import simple_report
simple_report(__file__,logpath=True,output='D:\zxt\AirtestIDE\xiaokang.air\report\log.html')
 
4、图像识别扩展
在脚本编辑区域,双击图片,展示Image Editor弹框,如下:
filename: 图片文件名称,自动生成
threshold: 阈值或临界值,只有达到设置的阈值,图像识别才能成功。
target pos: 击位的目标点置,默认是位置5。图片的目标位置一共分上、中、下9点位,正中间区域是位置5.

Airtest图像API-wait

wait()方法
作用:在等待界面元素出现,默认0.5s找一次,最多找20s。如果找到则返回返回图片中心点坐标;否则,raise TargetNotFoundError
常用参数:
v:图片
timeout:等待超时时间,默认是20s
interval:每次匹配的时间间隔
 
需求:进入小康首页,等待“娱乐”icon出现,0.1s查找一次,持续3s,如果找到,点击“娱乐”icon。
小结:
(1)wait方法解决什么问题?
解决界面元素存在,但加载需要时间的问题。
 
第6课、Airtest图像API-swipe
swipe方法基本使用:
作用:从屏幕一个位置滑动到另一个位置
常用参数:
v1: 图片 或 坐标(x,y)
v2: 图片 或 坐标(x,y),从v1滑动到v2
vector: [x,y]录制时自动生成,记录了屏幕中的滑动比例,向右为x轴正方向,向下为y轴正方向。
 

Airtest图像API(text、snapshot、sleep、keyevent)

1、text方法
作用:输入文本操作
常用参数:
text: 要输入的文本
(注:输入的位置为当前页面光标焦点所在的位置,一般与touch方法一起使用)
enter: 完成输入后自动执行Enter操作,默认为True
 
2、keyevent方法
作用:模拟键盘按钮输入,支持键码,如3为home键
常用参数:
keyname: 固定键名或键码,参考:https://www.cnblogs.com/vip136510786/p/14705567.html
 
3、snapshot方法
作用:截取当前屏幕图片,可以在测试报告中显示。
常用参数:
filename: 保存截屏为指定文件。
msg: 描述测试点,可在html报告中呈现。
 
4、sleep方法
作用:暂停时间
常用参数:
secs: 暂停时间,单位秒,默认1.0s
示例需求:
启动百年奥莱app
点击搜索输入框
输入:耳机
完成屏幕截图
暂停3秒
按home键,返回桌面

Airtest图像API-断言方法

1、assert_exists方法
作用:断言页面存在某元素,结果是布尔类型值
常用参数:
v: 图片
msg:描述测试点
return:找到图片,则返回图片中心点坐标;否则,将raise AssertionError
 
2、assert_not_exists方法
作用:断言页面不存在某元素,结果是布尔类型值
常用参数:
v: 图片(注:判断当前页面中不存在指定图片,不存在则通过,存在则不通过)
msg:描述测试点
 
3、assert_equal方法
作用:判断第一个值和第二个值相等
常用参数:
first:第一个值
second:第二个值
msg:描述此断言语句对应的测试点内容。
 
4、assert_not_equal方法
作用:判断第一个值和第二个值不相等
常用参数:
first:第一个值
second:第二个值
msg:描述此断言语句对应的测试点内容。
 
需求:
启动百年奥莱APP
判断首页是否存在搜索图标
点击底部【分类】TabBar
断言不存在搜索图标
断言False与assert_exists(搜索图标图片)的值是否相等
查看测试报告如下:

Airtest图像框架实战(app登录、退出)

1、需求:
启动钉钉APP
实现登录、退出业务自动化,并断言是否登录成功、退出成功
2、拓展:
如何解决无法输入账号的问题:MUMU模拟器设置——>语言和输入法——>将输入法改为nemu-vinput
 
切换代码模式:在代码编辑区域,选中代码行,右键选择并点击“图片/代码模式切换”。

Airtest-实战iOS真机(环境搭建)

1、环境搭建需要
(1)硬件
一台苹果电脑(运行xcode)
一部iphone手机(运行APP)
(2)软件
iOS-Tagent(WebDriver服务器)
xcode(iOS集成开发工具,运行iOS-Tagent)
iproxy(代理工作,做端口映射)
AirtestIDE(图像识别自动化测试工具)
 
2、软件功能
(1)iOS-Tagent
作用:在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素。
运行依赖:xcode
 
(2)xcode
作用:iOS集成开发工具,主要作用为运行WebDriverAgent文件到手机中
下载:appStore搜索xcode
运行依赖:开发者账号
 
xcode设置:
前提:将真机使用数据线连接上mac电脑
测试运行WebDriverAgentRunner到手机
如果失败,排查思路:
①在xcode中点击Test后,第一次将WebdriverRunner时,手机需要信任该项目(设置->通用->
设备管理)
②在手机中启用UI自动化(设置->开发者->EnableUIAutomation)
③如果有其他异常,根据异常提示信息自行参考百度或访问
https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md
查阅相关解决方案
 
xcode需要的操作:
a.添加开发者账号,普通apple ID即可
b.配置WebDriverAgent(Team、Product Bundle Identifier)
c.测试运行WebDriverAgentRunner到手机

Airtest-实战iOS真机(连接设备)

1、连接真机注意事项
(1)在xcode中点击Test前, 检查项目默认终端是否选择真机设备。
(2)点击在xcode中Test之后, 要查看控制信息, 如果控制台没任何信息输出,可以等待或者多Test几次, 直到控制台输出启动相关信息
(3)xcode配置iOS-T agent只需第一次配置,之后使用无需在单独配置, 切莫乱修改参数;
(4)真机设备中, 要开启自动化测试和信任iOS-T agent项目
 
2、连接真机步骤
(1)将真机使用数据线连接电脑
(2)启动xcode并打开配置好的iOS-T agent项目(菜单-Product->Test启动自动化服务程序)
(3)打开终端运行:i proxy 81008100(启动端口映射服务程序)
(4)启动Air Test IDE工具(选择【连接ios设备】->点击【connect】)

Airtest-实战iOS真机(钉钉登录、退出)

案例总结:
1、API使用方法和安卓没有区别
2、真机速度快,输入用户名和密码时需要暂停一会
3、ISO和安卓区别在于环境搭建

其他参考博文

1、Airtest接口功能介绍和示例总结
 
 
2、Airtest提高截图脚本兼容性的经验总结
 
 
 
 

UI自动化测试之Airtest的更多相关文章

  1. Airtest 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架同时也支持原生Android App 的基于元素识别的UI自动化测试.本文主要使用目 ...

  2. 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使 ...

  3. UI自动化测试之Jenkins配置

    前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家. 背景: 团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化 ...

  4. 『心善渊』Selenium3.0基础 — 30、UI自动化测试之POM设计模式

    目录 (一)POM模式介绍 1.什么是POM介绍 2.为什么要使用POM模式 3.POM的优势 4.POM模式封装思路 (1)POM模式将页面分成三层 (2)POM模式的核心要素(重点) (3)总结 ...

  5. 一种新的自动化 UI 测试解决方案 Airtest Project

    今天分享一个自动化UI测试工具airtest——一款网易出品的基于图像识别面向游UI测试的工具,也支持原生Android App基于元素识别的UI自动化测试.主要包含了三部分:Airtest IDE. ...

  6. airtest自动化中的poco+python连接手机实现ui自动化

    airtest:http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html官网地址 AirtestIDE:跨平台的UI自动化测试编 ...

  7. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  8. [转] Android自动化测试之使用java调用monkeyrunner(五)

    Android自动化测试之使用java调用monkeyrunner 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过, ...

  9. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

随机推荐

  1. 你的 JVM 基础“大厦”稳健吗?

    [从 1 开始学 JVM 系列] JVM 对于每位 Java 语言编程者来说无疑是"重中之重",尽管我们每天都在与它打交道,却很少来审视它.了解它,慢慢地,它成为了我们" ...

  2. Dockerfile自动化制作镜像

    1.创建Dockerfile文件:vim Dockerfile 2.Dockerfile的编写内容如下: 3.开始制作镜像 制作命令: docker build -t 镜像名:版本号 4.查看已经做好 ...

  3. 不写注释的程序员-Models

    Models 不写注释的程序员-Models # This is an auto-generated Django model module. # You'll have to do the foll ...

  4. windows下nodejs正确安装方式

    ​ 下载安装包: 32 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi 64 位安装包下载地址 : https://node ...

  5. Java关键字-static汇总

    1.静态变量(被static修饰的成员变量) 1-静态变量 运行时,Java虚拟机只为静态变量分配一次内存(加载类的过程中完成静态变量的内存分配) 类的内部可以在任何方法内直接访问静态变量 其他类中可 ...

  6. DataGridView高度自动调整

    AutoResizeGrid.cs代码 /// <summary> /// 根据行数据,自动调整DataGridView高度 /// </summary> public sea ...

  7. Mac上Markdown的使用

    Markdown是什么,且听我快快道来. 20年前,我第一次接触互联网,当时还是用 28.8k的猫拨号. 我从一本<电脑报>附赠的光盘里,找到了 台湾版的"烘培机"(烘 ...

  8. POJ1804——Brainman(水题)

    解题思路: 一个乱序序列的 逆序数 = 在只允许相邻两个元素交换的条件下,得到有序序列的交换次数 直接求逆序数 把S[i]和s[i+1~n]的元素逐个比较,如果s[i] > s[k] (k∈[i ...

  9. PHP网上商城

    页面展示: 代码参考:Php实现简易购物商城系统 - 邵文 - 博客园 (cnblogs.com)

  10. 关于在.H文件中定义变量

    KEIL中,在".H"文件定义变量. 如果该".H"文件同时被两个".C"文件调用,则会出现重复定义错误(*** ERROR L104: M ...