Airtest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,适用于游戏和应用程序。
• 跨平台:Airtest几乎可以在所有平台上执行游戏和App的自动化
• 易操作:使用图像识别技术来定位UI元素,无需嵌入任何代码即可对游戏和应用进行自动化
• 可扩展性:通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本
★GUI工具:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本
• Game: 借助图像识别和UI层次结构,支持所有游戏引擎和应用,多平台,使用方便
• Android: Android源生应用测试的测试过程中,Airtest可以发挥至关重要的作用,即插即用
• Winodws: 支持Windows应用,一次编写,跨平台运行
• iOS: Airtest 支持对iOS进行方便快捷的测试,可以通过Poco来快捷获取iOS设备页面中的原生元素的位置和信息。
• Web:基于Chrome Devtools Protocol协议,自动录制生成selenium脚本,精确定位与操作界面元素
命令: pip install -U airtest
说明:安装python的AirTest库,通过python代码直接调用AirTest库的Api方法
提示:此种方式,需要一定python代码基础
工具: AirTestIDE
说明:AirTestIDE工具自带python环境,无需单独安装。
提示:使用工具可以录制操作,也可以手动编写调用api
官网下载地址:http://airtest.netease.com/changelog.html
安装
将下载好的压缩包解压
然后启动
1.AirTest是由网易公司研发一款自动化测试工具
2.主要实现:游戏、android应用、web项目、windows应用、ios应用等自动化测试
3.AirTest有Poco、图像识别、selenium三个大类库
4.AirTest安装支持pyhon命令行、离线安装文件进行安装
注意
•设备必须处于开发人员模式并且 USB调试模式已打开
• 如果使用的操作系统是Windows操作系统,则可能还需要在系统上安装相应的设备驱动程序
•启动 安卓模拟器
• 点击 刷新adb或点击远程设备连接
• 勾选 兼容模式
成功连上安卓模拟器(如果无界面,可以点击重启ADB)
1.AirTest连接设备需要开启开发者模式及usb调试模式
2.远程连接可以修改不同设备端口号
3.勾选Use Javacap及Use ADB orientation可解决连接黑屏问题
• 作用:触摸动作
• 常用参数:
• v: 触摸对象图像或坐标
• times: 触摸次数,默认1
• duration: 触摸时间 默认0.01秒
使用Touch方法启动桌面应用-浏览器
运行脚本测试是否成功
新建脚本
使用Touch触摸百年奥莱应用
运行脚本
查看报告
新建脚本类型选择
Touch触摸区域点击理解
.air AirTest项目:生成一个项目名称.air目录,目录下有一个项目名.py文件
.py 纯Python(高级用户): 生成一个项目名.py文件
区别
相同点:都是python文件
不同点:脚本文件初始化代码不同,一个采用默认值无法看到,一个可以看到默认值,进行修改
提示
AirTest框架自带python解释器及标准库,无需单独安装python环境
点击Touch
拉选浏览器应用图标
形成这样一个脚本
1.运行脚本
模拟器中的浏览器被打开了
2.运行单行代码
模拟器的浏览器也一样打开了
快捷键 Ctil+L
作用:等待某个元素出现,如果出现返回元素的中心点坐标,否则抛出TargetNotFoundError异常
常用参数:
v: 图片
timeout: 等待超时,默认找20s
interval: 每次匹配的时间间隔
需求(基本使用)
启动浏览器app应用
分类出现就进行触摸点击操作
需求(扩展使用)
启动 浏览器app应用
点击分类
在分类菜单中,点击最新游戏,已0.1秒找一次,最多找5秒钟
作用:等待页面元素出现
默认:0.5秒找一次,默认最多找20s
应用:推荐与其他支持坐标点操作API一起使用
作用:滑动-从屏幕的一个位置滑动到屏幕另一个位置
常用参数:
★ v1: 图片 或者 坐标(x,y)
★ v2: 图片 或者 坐标(x,y), 从v1滑到v2
● vector: [x,y]录制时自动生成,记录了屏幕中的滑动比例,向右为X轴正向,向下为Y轴正向
需求
打开设置,滑到最下面
注意
作用:两个坐标点或两个元素之间滑动
注意:坐标点使用时,每组值需要使用小括号;
作用:判断页面元素是否存在指定元素,如果存在就返回元素中心点坐标(注:只找一次)
常用参数:
v: 图片
返回:到找图片则返回图片中心点坐标,否则返回False
需求
前置条件 浏览器已启动
查找 首页 是否存在
exists方法与wait方法区别
共同点:
● 找元素
● 元素存在,返回坐标点
区别:
● exists:只找一次元素,未找到返回False,适合判断动作,元素可存或不存在当前页面。
●wait: 未找到元素时,默认会找20s,然后抛异常,适合等待加载慢的页面,元素必须存在页面上;
作用:输入文本操作
常用参数:
text: 要输入的文本(注:输入的位置为当前页面默认焦点元素一般配合touch一起使用)
enter: 完整输入后自动执行Enter操作,默认为True
作用:模拟键盘按键输入,支持键码如:3为home键
常用参数:
keyname: 固定键名或键码 (https://www.cnblogs.com/findyou/p/5614178.html)
作用:截取当前屏幕图片,可以在测试报告显示。
常用参数:
Filename: 保存截屏为指定文件
msg: 描述测试点,可以在HTML报告中呈现
作用:暂停时间
常用参数:
secs: 延迟时间(s), 默认1.0s
需求
启动浏览应用
点击搜索框
输入 王者荣耀 点击搜索
屏幕截图 img01.jpg
暂停 3秒
将应用置于后台(返回桌面)
作用:断言(判断)页面存在元素
常用参数:
★ v: 图片(要判断页面是否存在元素)
● msg:描述测试点
●return: 找到图片则返回图片中心点坐标,否则将 raise AssertionError
作用:断言(判断)页面不存在元素
常用参数:
★ v: 图片(注:判断当前页面不存在图片元素,不存在通过,存在失败)
● msg:描述测试点(测试报告中显示)
作用:判断第一个值与第二个值相等
常用参数:
★ first: 第一个值
● second: 第二个值
● msg:描述此断言语句对应的测试点内容
作用:判断第一个条目与第二个条目不相等
常用参数:
★ first: 第一个值
● second: 第二个值
● msg:描述此断言语句对应的测试点内容
需求
启动 浏览器应用
断言是否存在 搜索按钮
点击分类
断言不存在 搜索按钮
断言 False 与 exists(搜索按钮图片)
发现到了断言不存在的时候报错,是因为存在搜索按钮,可以改成断言存在,则可以通过
硬件
一台苹果电脑 如:mac笔记本
一部iphone手机
软件
iOS-Tagent
xcode
iproxy
AirtestIDE 工具
作用:在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素
下载:https://github.com/facebookarchive/WebDriverAgent
运行依赖:xcode
作用:ios开发集成工具,在这理主要作用为运行WebDriverAgen文件到手机
下载:AppSotre->平台搜索xcode
运行依赖:开发者账号
添加开发者账号(普通的appleID即可)
配置WebDriverAgent(Team、 Product Bundle Identifiier)
测试运行WebDriverAgentRunner到手机
1.添加开发者账号(普通的appleID即可)
2.配置WebDriverAgent(Team、 Product Bundle Identifiier)
前提
使用xcode打开 第一步下载的WebDriverAgent
3. 测试运行WebDriverAgentRunner到手机
前提:将真机使用数据线连接上mac电脑
3. 测试运行WebDriverAgentRunner到手机失败
排查思路
在xcode中点击Test后,第一次将WebdriverRunner时,手机需要信任该项目(设置->通用->设备管理)
在手机中启用UI自动化 (设置->开发者->Enable UI Automation)
如果有其他异常,根据异常提示信息自行参考百度或访问https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md 查阅相关解决方案
作用:设置代理-将iPhone端口映射到电脑端口,通过访问电脑的端口访问到手机的端口了
下载: brew install libimobiledevice
运行: iproxy 8100 8100
查看:打开浏览器输入 http://127.0.0.1:8100/status 出现json格式连接信息
抓屏:http://127.0.0.1:8100/inspector
作用:编写自动化代码工具
下载: http://airtest.netease.com/changelog.html
1.将真机使用数据线连接电脑
2.启动xcode并打开配置好的 iOS-Tagent项目(菜单-Product->Test 启动自动化服务程序)
3.打开终端 运行:iproxy 8100 8100 (启动 端口映射 服务程序)
4.启动AirTestIDE 工具 (连接ios设备-> connect按钮)
1.在xcode中点击Test前,检查项目默认终端是否选择真机设备
2.点击在xcode中Test之后,要查看控制信息,如果控制台没任何信息输出,可以等待或者多Test几次,直到控制台输出启动相关信息
3.xcode配置iOS-Tagent只需第一次配置,之后使用无需在单独配置,切莫乱修改参数;
4.真机设备中,要开启自动化测试和信任iOS-Tagent项目
1.Api使用方法和安卓没有区别
2.ios和安卓的区别在于环境搭建
从移动端测试来看,电脑端和Web 端操作也差不多。可自行测试。