首页 > 其他分享 >App自动化测试工具 - AirTest

App自动化测试工具 - AirTest

时间:2023-07-03 15:46:08浏览次数:53  
标签:AirTestIDE App assert 点击 坐标 AirTest 测试工具 设备

App自动化测试工具 - AirTest

本次专题分享的系列目标

AriTest简介

AirTest能做什么

AirTest搭建方式

AirTestIDE工具下载

AirTestIDE安装步骤

AirTestIDE布局

AirTestIDE链接Android设备

远程设备连接

兼容模式

AirTest图像框架API

新建脚本类型选择

区别:

Tips:

运行脚本

查看报告

元素操作方法

Touch方法

图像识别扩展

AirTest的坐标系

使用屏幕坐标的功能查看坐标

Wait方法

swipe方法

exists方法

text方法

keyevent方法

snapshot 方法

sleep方法

assert_exists方法

assert_not_exists方法

assert_equal方法

assert_not_equal方法

本次专题分享的系列目标

认识Airtest

了解AirTest能做什么

AirTest安装及环境搭建

掌握AirTest图形化api使用

AriTest简介

AriTest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,主要是面向游戏的UI自动化测试,同样也支持

Android原生app、iOS app、微信小程序的UI测试。

特点:

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

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

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

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

AirTest能做什么

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

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

Windows:支持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

AirTestIDE工具下载

官网下载地址: https://airtest.netease.com/

找到对应自己设备平台的版本进行下载

点击同意并下载

AirTestIDE安装步骤

下载完成后,直接点击下载好的dmg文件,进行安装

安装完成后,进入到登录页面,点击右下角跳过,直接进入AirTestIDE

AirTestIDE布局

菜单栏和快捷按钮

用于创建新项目,保存项目,运行脚本和检查报告输出

Airtest辅助窗

基于图像识别技术框架

Poco辅助窗

基于UI控件搜索框架,支持主流游戏引擎、Android应用程序

Selenium Window

Web项目,Selenium框架

脚本编辑窗

脚本区域

Log查看窗

日志区域

设备窗

实时手机屏幕,支持使用鼠标事件来远程控制设备

AirTestIDE链接Android设备

Android真机连接准备:

先安装手机对应品牌的官方驱动,确保能使用电脑对手机进行USB调试

确保已经打开了手机中的"开发者选项",并且打开"开发者选项"内的"允许USB调试"

由于设备厂商不同,开启开发者模式的步骤有区别,但是大多是针对版本号进行多次点击即可开启开发者模式

部分手机需要打开"允许模拟位置"、"允许通过USB安装应用"等设置

关闭电脑上已经安装的手机助手软件,能避免绝大多数问题

使用USB线连接手机和电脑,手机上出现的 "USB" 弹窗

勾选一律允许使用这台计算机进行调试,避免以后的重复操作

点击

点击连接面板中的 "ADB" 按钮,设备列表将会刷新

点击列表内对应设备的 "Connect" 完成连接

如果经上述步骤后,设备未刷出,点击 "ADB" 按钮

如果遇到任何Android设备连接问题,请参阅Android连接常见问题

远程设备连接

已知IP和端口的远程设备 ip:port,AirtestIDE可以直接连接

点击设备窗内的 ""

将 adb connect ip:port 字段填入填充框内,点击 "" 按钮,

远程设备将出现在设备列表中,点击 "connect"按钮。

主流模拟器的设备连接代码如下:

 

模拟器

adb连接代码

网易MuMu

adb connect 127.0.0.1 :7555

夜神

adb connect 127.0.0.1 :62001

逍遥

adb connect 127.0.0.1 :21503

iTools

adb connect 127.0.0.1 :54001

天天

adb connect 127.0.0.1 :6555

海马玩

adb connect 127.0.0.1 :26744

BlueStacks

adb connect 127.0.0.1 :5555

兼容模式

AirTestIDE提供了3个备用的连接参数: Use javacap 、Use ADB orientation 和 Use ADB touch

Use javacap 是给部分无法正常看到手机画面、minicap初始化失败 的手机或设备用的,所以模拟器看到黑屏、部分特

殊的平板等设备可以考虑勾选这个选项

Use ADB orientation 是 屏幕旋转 的,如果在安卓手机屏幕旋转方向检测有问题、或者是部分特殊的平板无法显示

正确的屏幕方向时可以勾选

Use ADB touch 是 发送adb指令来点击屏幕 ,效果很差,速度也很慢, 不建议勾选,只有在部分无法点击屏幕的特殊

安卓设备上才需要使用(例如智能后视镜、特殊型号的平板等设备上) 正常情况下,手机都可以点击,如果无法被点击 (比如小米设备),一般都是因为手机设置有选项漏了打开,特别是小米设备要注意 开启允许模拟点击 的设置

AirTest图像框架API

AirtestIDE中提供了Airtest录制辅助窗,可以快速生成Airtest常用语句,帮助我们录制脚本

在AirtestIDE的Airtest录制辅助窗内,包含有三种类型的录制按钮:

操作类型

辅助类型

断言类型

点击:touch

输入文本:text

断言存在:assert_exists

滑动:swipe

关键词操作:keyevent

断言不存在:assert_not_exists

等待截图:wait

等待:sleep

断言相等:assert_equal

存在截图:exists

断言不相等:assert_not_equal

对当前画面截图:snapshot

Tips:光标悬浮至API上,显示提示参数信息

新建脚本类型选择

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

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

区别:

相同点:都是python文件

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

Tips:

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

运行脚本

运行脚本有两种方式

运行脚本

菜单 ->运行 →运行脚本

F5

运行单行代码

光标定位当前行代码 ->右键 ->只运行选中代码

查看报告

快捷键 Ctil + L

元素操作方法

Touch方法

作用:触摸动作

常用参数:

v:触摸对象图像或坐标

times:触摸次数,默认1

duration:触摸时间,默认0.01秒

基础操作: 使用touch 触摸「Monkey」应用

点击touch按钮

拉选应用图标

实例:

图像识别扩展

图像触摸位置

图像识别匹配度

filename:图片名称,可修改文件名,敲击Enter确认修改。

threshold:识别阈值,范围[0,1]。识别可信度低于此阈值的结果将被舍弃。 (可自行调节,默认匹配度为70%) target_pos:范围1-9,对应九宫格键盘位置,如上图所示。(默认位置0;5,均在图像中央位置)

rgb:图片颜色(默认灰色)

AirTest的坐标系

使用绝对坐标系的touch和swipe接口

AirTest的touch接口,实际上点击的是一个 (x, y)绝对坐标,在截图语句中, AirTest会先根据传入的图片找到该图片在

当前画面上的位置坐标,然后进行点击。

而AirTest的swipe接口,滑动起点和滑动终点使用的也是(x, y)绝对坐标。

打开IDE的选项>–设置,可以看到在Device设置部分,有实时坐标显示和相对坐标显示俩个选项。

勾选实时坐标选项,可以实时在手机屏幕画面上显示出鼠标位置的坐标,方便大家获取绝对坐标。此时 点击鼠标右键,还可以自

动将当前坐标信息复制到剪贴板中,在代码里只需要直接粘贴即可插入点击位置的坐标。

在勾选了实时显示坐标的情况下,再勾选相对坐标选项,将会以(0, 0) 到 (1, 1) 为范围显示出相对坐标。使用相对坐标可以避

免跨分辨率的操作点超出屏幕的问题,使坐标操作兼容性更好。

Wait方法

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

主要解决问题:元素存在,但加载需要一定时间

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

常用参数:

v:图片

timeout: 等待超时时间(默认20秒)

interval:每次匹配间隔的时间(默认0.5秒)

基础操作: 在菜单中找到“消息”tab则进行点击

实例:

扩展使用:在消息页,查找 会员订阅,0.1秒找一次,最多找5秒钟

实例:

swipe方法

作用:滑动 - 两个坐标点或两个元素之间滑动,从屏幕的一个位置滑动到屏幕的另一个位置

常用的参数:

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

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

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

提示:坐标点根据实际屏幕来定

注意:坐标点使用时,每组值需要使用小括号单独扩起来

基础操作:在me页面 coin -> 订阅图标

实例:

exists方法

作用:判断元素是否存在,如果存在返回图片中心点坐标,如果不存在返回 False;(根据图片是否存在选择分支,不存在不操

作)

常用参数:

v:传图片参数

text方法

作用:输入文本操作

常用参数:

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

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

keyevent方法

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

常用的参数:

keyname:固定键名或者键码

keyname

value

content

KEYCODE_MENU

82

菜单键

KEYCODE_HOME

3

按键Home

KEYCODE_BACK

4

返回键

KEYCODE_VOLUME_UP

24

音量增加键

KEYCODE_VOLUME_DOWN

25

音量减小键

KEYCODE_ENTE

66

回车键

KEYCODE_ESCAPE

111

ESC键

KEYCODE_POWER

26

电源键

KEYCODE_DEL

67

退格键

KEYCODE_CALL

5

拨号键

KEYCODE_ENDCALL

6

挂机键

snapshot 方法

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

常用参数:

Filename:保存截屏为指定的文件

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

sleep方法

作用: 暂停时间,强制等待

常用参数:

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

方法组合实例:

assert_exists方法

作用:断言页面存在元素

常用的参数:

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

msg:描述测试点

return:找到图片则返回图片中心点坐标,否则将返回(raise Assertion Error)

assert_not_exists方法

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

常用参数:(和assert_exists)一样

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

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

assert_equal方法

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

常用参数:

first:第一个值

second:第二个值

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

assert_not_equal方法

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

常用参数:和(assert_equal)一样

first:第一个值

second:第二个值

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

方法组合实例:

什么是断言?

所谓的断言,就是让程序代替人工对程序执行结果检查的过程,这个过程会在报告中体现,这个就是区分于判断语句的本

质区别,因为判断语句不会在报告中体现,而断言会在报告中标示用例的成功与失败

标签:AirTestIDE,App,assert,点击,坐标,AirTest,测试工具,设备
From: https://www.cnblogs.com/test-home/p/17522930.html

相关文章

  • 移动应用加固:政务APP如何保障安全?
    作为一款服务国土调查和自然资源管理工作的一款手机App,是自然资源部自然资源调查监测司组织中国国土勘测规划院应用互联网+、云计算等技术,依托“三调”和年度国土变更调查工程开发的平台。分为管理版和专业版两个版本,其中,管理版面向自然资源系统内人员,专业版面向系统外专业技术队......
  • app之抓取https包的配置
    使用charles抓取HTTPS包安卓7以上,将证书安装在系统级别,才能抓https的包。安卓7以下,将证书安装在用户级别,就可以抓https的包。安卓7以下(模拟器)#1.打开模拟器,打开charles;#2.在charles中找到电脑的ip地址#3.在模拟器上找到设置,---->waln----->长按网络---->手动配置如下(......
  • 32. Spring Boot使用@SpringBootApplication注解【从零开始学Spring Boot】
     如果看了我之前的文章,这个节你就可以忽略了,这个是针对一些刚入门的选手存在的困惑进行写的一篇文章。很多SpringBoot开发者总是使用@Configuration,@EnableAutoConfiguration和@ComponentScan注解他们的main类。由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),S......
  • 2023-07-03 uniapp小程序端报错:TypeError: eval is not a function
    完整报错:ErrorinonLoadhook:"TypeError:evalisnotafunction" onLoad钩子中的错误:“TypeError:eval不是函数”原因:代码里使用了eval函数,小程序端不支持该函数,h5端和app(Android)端支持。解决方案:小程序端采取替换eval方案。注意:eval函数被认为是不安全的函数,存在脚本代......
  • 2023-07-03 禁止uniapp之app端上下滑动出现的回弹效果:"app-plus": {"bounce": "none"}
    前言:uni项目打包到app(以Android为例)上运行,上下滑动页面的时候会出现一个半圆,这就是所谓的退弹,如需关闭可在pages.json文件中的globalStyle中添加一下代码即可:"app-plus":{"bounce":"none"}uniapp关于app-plus的更多配置可参考官网:https://uniapp.dcloud.net.cn/colloc......
  • flatpak appimage大小对比
    格式:单应用大小/加上依赖/安装后大小 flatpakAppImageaptgimp127.7MB/797.6MB/366MB164MB vscodium120MB/972MB/335MB82.2MB82.2MBblender383MB/410MB/1187.84MB209.64MB244MB对比了三款常用的桌面软件,看得出f......
  • 接口测试工具postman和禅道zentao的区别?
    无论你是一名资深测试人员还是刚入行的新手,你都必须知道:测试工具是提高工作效率、保证产品质量的重要助手。postman大家都知道,zentao又是什么?两者不是一类软件。禅道(zentao)开源项目管理软件是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组......
  • 卸载Windows 预装App
    有些windows预装的App可能用不上,还会占开始菜单的位置。我卸载预装App的方法是使用Winget这个软件,在微软应用商店搜索Winget.注意不要把"截图和草图"卸载了,很多聊天软件的截屏就是调用的这个应用。安装好了打开一个管理员的Powershell。Wingetlistwingetuninstall--id<......
  • iOS分发证书过期或手动吊销,会影响App的下架吗?
    ​iOSdistribution发布证书过期或者被手动revoke了app会被下架吗? 在距离distribution证书过期一个月(或被手动revoke了)的时候会受到apple的邮件  ​编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只要你的每年99$的......
  • iOS App 上架流程图文教学
    在上架App之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App送审的话,则要依序做完下列几件事情即可。在开发者后台产生.cer(凭证档)在开发者后台产生AppID在开......