目录

一、AirTest简介

二、AirTest与模拟器进行连接

三、图像库(touch、运行、报告)

一、AirTest简介

AirTest是一个基于图像识别原理的跨平台UI自动化测试框架,适用于游戏和应用程序。

1.特点

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

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

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

d.GUI工具:AirTest IDE是一个强大地GUI工具,可以帮助你录制和调试测试脚本

2.应用方面

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

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

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

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

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

3.AirTest的API库

图像识别库、Poco库、Selenium库

4.AirTest搭建方式

a.python

        命令: pip install -U airtest

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

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

b.GUI工具

        工具: AirTest IDE

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

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

二、AirTest与模拟器进行连接

1.连接移动设备之前需要做什么?

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

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

2.AirTest如何连接模拟器?

●启动安卓模拟器

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

●勾选兼容模式

远程设备连接:

兼容模式:

 AirTest成功连接模拟器

三、图像库(touch、运行、报告)

AirTest图像框架API

 AirTest图像框架API查看参数信息

 1.Touch方法

●作用:触摸动作

●常用参数:

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

        ●Times:触摸次数,默认1

        ●duration:触摸时间默认0.01秒

●触摸支持图像和坐标

需求1:

使用Touch方法启动桌面应用,运行脚本测试是否成功

实现步骤:新建脚本->使用Touch触摸应用->运行脚本->查看报告

步骤一 新建脚本类型选择:

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

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

区别:

●相同点:都是python文件

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

提示:

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

步骤二 使用Touch触摸咕咕机:

●点击Touch

●拉选咕咕机应用图标

步骤三 运行脚本:

●运行脚本(菜单->运行脚本或者F5键)

●运行单行代码(光标定位当前行代码->右键)

步骤四 查看报告:

●快捷键 Ctrl+L

图像识别扩展:

a.图像触摸位置

b.图像识别匹配度

 2.wait等待元素

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

●常用参数:

        ●v:图片

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

        ●interval:每次匹配的时间间隔

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

需求(扩展使用) :

●启动咕咕机app应用

●点击菜单-分类

●在分类菜单中 ,查找 菜单(我的),已0.1秒找 一次,最多找5秒钟

3.swipe方法

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

●常用参数:

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

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

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

需求:

●启动咕咕机app应用

●点击分类,从自助题库滑到汉语学习(基于图片与录制实现)

需求(拓展):

●启动咕咕机app应用,点击分类

●从自助题库滑到汉语学习,滑动使用时长2秒( 基于2张图片实现)

●从坐标点( 1000,1800)滑到( 1000,40 ) -提示:坐标点根据实际屏幕来定

4.AirTest中swipe方法兼容不同分辨率的解决方法(屏幕左右滑动)

a.首先获取手机的分辨率,可以使用Airtest中的poco模块的get_screen_size()方法

# -*- encoding=utf8 -*-
__author__ = "YQ20639"

from airtest.core.api import *


from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

auto_setup(__file__)

print(poco.get_screen_size())

 b.将屏幕的宽度和长度分别赋值为x和y,注意屏幕左上角的坐标为(0,0),所以左下角的坐标为(0,2340),右上角的坐标为(1080,0),右下角的坐标为(1080,2340)

c.按照屏幕的比例进行滑动,我想要从屏幕的右侧向左侧滑动,就可以按照如下方法进行,从(0.9*x,0.5*y)的坐标移动到(0.1*x,0.5y)的坐标

# -*- encoding=utf8 -*-
__author__ = "YQ20639"

from airtest.core.api import *


from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

auto_setup(__file__)

print(poco.get_screen_size())
xy = poco.get_screen_size()
x = xy[0]
y = xy[1]
swipe((0.9*x,0.5*y),(0.1*x,0.5*y),duration=1)

5.text方法

●作用:输入文本操作

●常用参数:

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

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

6.keyevent方法

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

●常用参数:

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

7.snapshot方法

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

●常用参数:

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

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

8.sleep方法

●作用:暂停时间

●常用参数:

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

9.assert_exists()方法

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

●常用参数:

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

        ●msg:描述测试点

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

10.assert_not_exists()方法

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

●常用参数:

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

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

11.assert_equal()方法

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

●常用参数:

        ★first:第一个值

        ●second:第二个值

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

12.assert_not_equal()方法

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

●常用参数:

        ★first:第一个值

        ●second:第二个值

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

 断言:让程序代替人工对程序执行结果检查的过程

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐