UI⾃动化测试之Airtest
官⽅⽂档:
本⽂我们讲解下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)启动
双击可执⾏程序即可。
(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
port 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: 固定键名或键码,参考:
3、snapshot⽅法
作⽤:截取当前屏幕图⽚,可以在测试报告中显⽰。
常⽤参数:
filename: 保存截屏为指定⽂件。
msg: 描述测试点,可在html报告中呈现。
4、sleep⽅法
作⽤:暂停时间
常⽤参数:
secs: 暂停时间,单位秒,默认1.0s
⽰例需求:
启动百年奥莱app
点击搜索输⼊框
输⼊:⽿机
完成屏幕截图
暂停3秒
按home键,返回桌⾯
Airtest图像API-断⾔⽅法
1、assert_exists⽅法
原生安卓app开发
作⽤:断⾔页⾯存在某元素,结果是布尔类型值
常⽤参数:
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)
③如果有其他异常,根据异常提⽰信息⾃⾏参考百度或访问
github/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提⾼截图脚本兼容性的经验总结
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论