首页 - 新闻 -  自动化测试-AirTest-移动端测试-笔记

自动化测试-AirTest-移动端测试-笔记

2023-09-15 17:46

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://www.gsm-guard.net/changelog.html

将下载好的压缩包解压

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

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

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

AirTest连接安卓设备

注意

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

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

连接安卓手机

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

• 勾选 兼容模式

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

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

AirTest图像识别框架

• 常用参数:

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

• times: 触摸次数,默认1

• duration: 触摸时间 默认0.01秒

测试1

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

  • 运行脚本测试是否成功

实现步骤
  • 新建脚本

  • 使用Touch触摸百年奥莱应用

  • 运行脚本

  • 查看报告

难点
  • 新建脚本类型选择

  • Touch触摸区域点击理解

步骤一 新建脚本类型选择
  • .air AirTest项目:生成一个项目名称.air目录,目录下有一个项目名.py文件

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

区别

  • 相同点:都是python文件

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

提示

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

步骤二 使用Touch触摸浏览器
  1. 点击Touch

  • 常用参数:

  • 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:只找一次元素,未找到返回False,适合判断动作,元素可存或不存在当前页面。

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

text方法

  • 作用:输入文本操作

  • 常用参数:

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

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

keyevent方法

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

  • 常用参数:

  • keyname: 固定键名或键码 (https://www.gsm-guard.net/findyou/p/5614178.html)

snapshot方法

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

  • 常用参数:

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

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

sleep方法

  • 作用:暂停时间

  • 常用参数:

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

需求

  • 启动浏览应用

  • 点击搜索框

  • 输入 王者荣耀 点击搜索

  • 屏幕截图 img01.jpg

  • 暂停 3秒

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

  • 常用参数:

★ 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真机

所需环境

硬件

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

  1. 一部iphone手机

软件

  1. iOS-Tagent

  1. xcode

  1. iproxy

  1. AirtestIDE 工具

软件环境

iOS-Tagent

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

  • 下载:https://www.gsm-guard.net/facebookarchive/WebDriverAgent

  • 运行依赖:xcode

  • 下载:AppSotre->平台搜索xcode

  • 运行依赖:开发者账号

xcode需要的操作
  1. 添加开发者账号(普通的appleID即可)

  1. 配置WebDriverAgent(Team、 Product Bundle Identifiier)

  1. 测试运行WebDriverAgentRunner到手机

xcode设置

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

前提

使用xcode打开 第一步下载的WebDriverAgent

前提:将真机使用数据线连接上mac电脑

排查思路

  1. 在xcode中点击Test后,第一次将WebdriverRunner时,手机需要信任该项目(设置->通用->设备管理)

  1. 在手机中启用UI自动化 (设置->开发者->Enable UI Automation)

  1. 如果有其他异常,根据异常提示信息自行参考百度或访问https://www.gsm-guard.net/appium/appium/blob/master/docs/en/drivers/www.gsm-guard.net 查阅相关解决方案

iproxy

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

  • 下载: brew install libimobiledevice

  • 运行: iproxy 8100 8100

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

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

  • 下载: http://www.gsm-guard.net/changelog.html

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