AirTest

简介

Airtest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,适用于游戏和应用程序。

特点

• 跨平台:Airtest几乎可以在所有平台上执行游戏和App的自动化

• 易操作:使用图像识别技术来定位UI元素,无需嵌入任何代码即可对游戏和应用进行自动化

• 可扩展性:通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本

★GUI工具:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本

AirTest能做什么

• Game: 借助图像识别和UI层次结构,支持所有游戏引擎和应用,多平台,使用方便

• Android: Android源生应用测试的测试过程中,Airtest可以发挥至关重要的作用,即插即用

• Winodws: 支持Windows应用,一次编写,跨平台运行

• iOS: Airtest 支持对iOS进行方便快捷的测试,可以通过Poco来快捷获取iOS设备页面中的原生元素的位置和信息。

• Web:基于Chrome Devtools Protocol协议,自动录制生成selenium脚本,精确定位与操作界面元素

AirTest搭建方式

python(了解)

命令: pip install -U airtest

说明:安装python的AirTest库,通过python代码直接调用AirTest库的Api方法

提示:此种方式,需要一定python代码基础

Gui工具

工具: AirTestIDE

说明:AirTestIDE工具自带python环境,无需单独安装。

提示:使用工具可以录制操作,也可以手动编写调用api

官网下载地址:http://airtest.netease.com/changelog.html

安装

将下载好的压缩包解压

然后启动

总结

1.AirTest是由网易公司研发一款自动化测试工具

2.主要实现:游戏、android应用、web项目、windows应用、ios应用等自动化测试

3.AirTest有Poco、图像识别、selenium三个大类库

4.AirTest安装支持pyhon命令行、离线安装文件进行安装

AirTest连接安卓设备

注意

•设备必须处于开发人员模式并且 USB调试模式已打开

• 如果使用的操作系统是Windows操作系统,则可能还需要在系统上安装相应的设备驱动程序

连接安卓手机

连接安卓模拟器

•启动 安卓模拟器

• 点击 刷新adb或点击远程设备连接

• 勾选 兼容模式

成功连上安卓模拟器(如果无界面,可以点击重启ADB)

总结

1.AirTest连接设备需要开启开发者模式及usb调试模式

2.远程连接可以修改不同设备端口号

3.勾选Use Javacap及Use ADB orientation可解决连接黑屏问题

AirTest图像识别框架

Touch方法

• 作用:触摸动作

• 常用参数:

• v: 触摸对象图像或坐标

• times: 触摸次数,默认1

• duration: 触摸时间 默认0.01秒

测试1

使用Touch方法启动桌面应用-浏览器

运行脚本测试是否成功

实现步骤

新建脚本

使用Touch触摸百年奥莱应用

运行脚本

查看报告

难点

新建脚本类型选择

Touch触摸区域点击理解

步骤一 新建脚本类型选择

.air AirTest项目:生成一个项目名称.air目录,目录下有一个项目名.py文件

.py 纯Python(高级用户): 生成一个项目名.py文件

区别

相同点:都是python文件

不同点:脚本文件初始化代码不同,一个采用默认值无法看到,一个可以看到默认值,进行修改

提示

AirTest框架自带python解释器及标准库,无需单独安装python环境

步骤二 使用Touch触摸浏览器

点击Touch

拉选浏览器应用图标

形成这样一个脚本

步骤三 运行脚本

1.运行脚本

模拟器中的浏览器被打开了

2.运行单行代码

模拟器的浏览器也一样打开了

步骤四 查看报告

快捷键 Ctil+L

wait方法

作用:等待某个元素出现,如果出现返回元素的中心点坐标,否则抛出TargetNotFoundError异常

常用参数:

v: 图片

timeout: 等待超时,默认找20s

interval: 每次匹配的时间间隔

需求(基本使用)

启动浏览器app应用

分类出现就进行触摸点击操作

需求(扩展使用)

启动 浏览器app应用

点击分类

在分类菜单中,点击最新游戏,已0.1秒找一次,最多找5秒钟

总结

作用:等待页面元素出现

默认:0.5秒找一次,默认最多找20s

应用:推荐与其他支持坐标点操作API一起使用

swipe滑动元素

作用:滑动-从屏幕的一个位置滑动到屏幕另一个位置

常用参数:

★ v1: 图片 或者 坐标(x,y)

★ v2: 图片 或者 坐标(x,y), 从v1滑到v2

● vector: [x,y]录制时自动生成,记录了屏幕中的滑动比例,向右为X轴正向,向下为Y轴正向

需求

打开设置,滑到最下面

注意

作用:两个坐标点或两个元素之间滑动

注意:坐标点使用时,每组值需要使用小括号;

exists方法

作用:判断页面元素是否存在指定元素,如果存在就返回元素中心点坐标(注:只找一次)

常用参数:

v: 图片

返回:到找图片则返回图片中心点坐标,否则返回False

需求

前置条件 浏览器已启动

查找 首页 是否存在

exists方法与wait方法区别

共同点:

● 找元素

● 元素存在,返回坐标点

区别:

● exists:只找一次元素,未找到返回False,适合判断动作,元素可存或不存在当前页面。

●wait: 未找到元素时,默认会找20s,然后抛异常,适合等待加载慢的页面,元素必须存在页面上;

text方法

作用:输入文本操作

常用参数:

text: 要输入的文本(注:输入的位置为当前页面默认焦点元素一般配合touch一起使用)

enter: 完整输入后自动执行Enter操作,默认为True

keyevent方法

作用:模拟键盘按键输入,支持键码如:3为home键

常用参数:

keyname: 固定键名或键码 (https://www.cnblogs.com/findyou/p/5614178.html)

snapshot方法

作用:截取当前屏幕图片,可以在测试报告显示。

常用参数:

Filename: 保存截屏为指定文件

msg: 描述测试点,可以在HTML报告中呈现

sleep方法

作用:暂停时间

常用参数:

secs: 延迟时间(s), 默认1.0s

需求

启动浏览应用

点击搜索框

输入 王者荣耀 点击搜索

屏幕截图 img01.jpg

暂停 3秒

将应用置于后台(返回桌面)

assert_exists方法

作用:断言(判断)页面存在元素

常用参数:

★ v: 图片(要判断页面是否存在元素)

● msg:描述测试点

●return: 找到图片则返回图片中心点坐标,否则将 raise AssertionError

assert_not_exists方法

作用:断言(判断)页面不存在元素

常用参数:

★ v: 图片(注:判断当前页面不存在图片元素,不存在通过,存在失败)

● msg:描述测试点(测试报告中显示)

assert_equal方法

作用:判断第一个值与第二个值相等

常用参数:

★ first: 第一个值

● second: 第二个值

● msg:描述此断言语句对应的测试点内容

assert_not_equal方法

作用:判断第一个条目与第二个条目不相等

常用参数:

★ first: 第一个值

● second: 第二个值

● msg:描述此断言语句对应的测试点内容

需求

启动 浏览器应用

断言是否存在 搜索按钮

点击分类

断言不存在 搜索按钮

断言 False 与 exists(搜索按钮图片)

发现到了断言不存在的时候报错,是因为存在搜索按钮,可以改成断言存在,则可以通过

AirTest连接IOS真机

所需环境

硬件

一台苹果电脑 如:mac笔记本

一部iphone手机

软件

iOS-Tagent

xcode

iproxy

AirtestIDE 工具

软件环境

iOS-Tagent

作用:在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素

下载:https://github.com/facebookarchive/WebDriverAgent

运行依赖:xcode

xcode

作用:ios开发集成工具,在这理主要作用为运行WebDriverAgen文件到手机

下载:AppSotre->平台搜索xcode

运行依赖:开发者账号

xcode需要的操作

添加开发者账号(普通的appleID即可)

配置WebDriverAgent(Team、 Product Bundle Identifiier)

测试运行WebDriverAgentRunner到手机

xcode设置

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 查阅相关解决方案

iproxy

作用:设置代理-将iPhone端口映射到电脑端口,通过访问电脑的端口访问到手机的端口了

下载: brew install libimobiledevice

运行: iproxy 8100 8100

验证

查看:打开浏览器输入 http://127.0.0.1:8100/status 出现json格式连接信息

抓屏:http://127.0.0.1:8100/inspector

AirtestIDE 工具:

作用:编写自动化代码工具

下载: 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 端操作也差不多。可自行测试。

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: