自动化Airtest

  • 一:Airtest 简介
  • 二:Airtest IDE界面简介
  • 三:Airtest IDE自动化测试
  • 1> 设备链接
  • 2> demo 调试
  • 四:Airtest IDE 语法API
  • 1> text API
  • 2> touch API
  • 3> wait API
  • 4> swip API
  • 5> keyevent API
  • 6> sleep API
  • 7> snapshot API
  • 8> exits API
  • 9> assert_exists&assert_not_exists
  • 10> assert_equal&assert_not_equal
  • 五:代码篇 Airtest包
  • 1>python-自动化Airtest-2代码篇 Airtest包


一:Airtest 简介

为了降低自动化测试的门槛,用更少的精力产出更多高效的自动化脚本,来达到提升测试效率的目的,网易推出了一整套解决方案,项目命名为Airtest Project。
网易出品一个基于python 的跨平台、基于图像识别的自动化测试框架,适用于游戏、app;支持平台 AirTest在Windows、iOS、Android 款UI自动化测试工具

下载内容为一个免安装的压缩包,解压后自带所有的环境,自动生成脚本,自带编辑器、模拟器等;可以直接点击打开-skip-使用

整个工具套件由Airtest IDE、Airtest、Poco、Airlab组成

Airtest IDE:跨平台的UI自动化编辑器
Airtest:基于python的跨平台的UI自动化测试框架,基于图像识别原理
Poco:基于UI空间搜索的自动化框架
Airlab:网易Airtest云测试服务

二:Airtest IDE界面简介

菜单栏与快捷方式按钮

airtest 引用py文件 python airtest_python


常用:

窗口:编辑界面显示功能窗口

辅助窗口-主要是调用一些API

airtest 引用py文件 python airtest_python_02


touch:触摸

swipe:滑动

wait:等待

exist:是否存在

snapshot:截屏

text:输入文本

keyevent:按键

sleep:休眠

assert_exist:断言存在

assert_not_exist:断言不存在

assert_equal:断言相等

assert_not_equal:断言不相等Poco库-UI自动化框架

针对于游戏、app

airtest 引用py文件 python airtest_自动化_03

selenium 框架

主要做web UI自动化

airtest 引用py文件 python airtest_ide_04


脚本区域

点击Airtest中的操作指令,再到连接设备窗口中截图,完成一条操作步骤

airtest 引用py文件 python airtest_自动化_05


日志区域

airtest 引用py文件 python airtest_自动化_06


其中调节过滤框可以调整输出日志模拟器框

airtest 引用py文件 python airtest_ide_07

三:Airtest IDE自动化测试

1> 设备链接

adb 调通后—》点击Airtest 上connect 按钮–》显示镜像信息表示连接上
或者连上模拟器;

2> demo 调试

Script Editor 页面运行代码

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

from airtest.core.api import *
from airtest.cli.parser import cli_setup

if not cli_setup():
    auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:5037/27QGL20828000064?cap_method=MINICAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH",])


# script content
print("start...")
touch(截图点击内容)
        
# generate html report
# from airtest.report.report import simple_report
# simple_report(__file__, logpath=True)

Log Viewer 日志打印

airtest 引用py文件 python airtest_ide_08


通过选择显示日志级别,选择查询运行info;报错信息也在此打印功能窗口-查看日志

airtest 引用py文件 python airtest_API_09


选择其他浏览器可能报错-一般选择谷歌浏览器;

运行事件、日志、运行结果、预览截图、匹配度等信息;

也可全部 成功 失败 断言 选择查看自己需要信息;

注意:调试时候可以运行选择的代码

图片识别规则设置

双击进入图片编辑模式

airtest 引用py文件 python airtest_自动化_10


Snapshpt&Recongnition:截图+自动识别;如下显示和识别位置

airtest 引用py文件 python airtest_python_11

show help: 帮助信息
右侧:
filename :文件名
threshold:阈值
target_pos:在图片上对应1-9,其中0与5在中央位置,位置一样
rgb:是否开启彩色识别

注释
和python代码注释一致;# 或者快捷按键 Ctrl+/ 多行注释

四:Airtest IDE 语法API

1> text API

airtest 引用py文件 python airtest_ide_12


确认光标在时,点击text 输入内容–需要input 信息

注意:自动化时要确定方标位置

text(text, enter =True,search = False)
@text: 输入文本
@enter 完成后自动执行enter操作,默认为True
@search 完成后强制执行search操作,默认为False

2> touch API

airtest 引用py文件 python airtest_python_13


点击Touch 后在右侧模拟器屏幕上点击画出–点击区域

截图信息自动转为代码 ==》 touch(图标信息)

3> wait API

wait api 包含4个元素:

V:点击的图片或者坐标

timeout:等到超市时间,默认20s

interval:每次寻找的时间间隔,默认0.5s

intervalfunc:图片没有找到,就执行后面函数,默认,None

return :返回中心坐标,或者报错;

airtest 引用py文件 python airtest_airtest 引用py文件_14

[Start running..]
no cmdline args
start...
(520, 1397)
[Finished]

上图中进行两次找图;

wait:找到图标,并返回(520, 1397)中心坐标;
执行touch点击操作

为节约系统资源和时间可以:

airtest 引用py文件 python airtest_API_15

4> swip API

作用:从一个位置滑动到另一个位置

参数:

VI:点击图片或者坐标

V2:图片或者坐标

vector:【x,y】录制的自动生成;记录滑动比例;向右X轴为正向,向下为Y轴为正向

duration:滑动操作的持续时长,默认,0.5s

第一种方法:

airtest 引用py文件 python airtest_自动化_16


第二种方法:

airtest 引用py文件 python airtest_ide_17

5> keyevent API

参数:
keyname:按键名,可以是键名,可以是键码
常用的键码:

功能

键名

键码

Home

KEYCODE_HOME

3

菜单键

KEYCODE_MENU

82

返回键

KEYCODE_BACK

4

电源键

KEYCODE_POWER

26

扬声器静音键

KEYCODE_VOLUME_MUTE

164

音量增加键

KEYCODE_VOLUME_UP

24

音量减小键

KEYCODE_VOLUME_DOWN

25

回车键

KEYCODE_ENTER

66

ESC键

KEYCODE_ESCAPE

111

导航键 确定键

KEYCODE_DPAD_CENTER

23

导航键 向上

KEYCODE_DPAD_UP

19

导航键 向下

KEYCODE_DPAD_DOWN

20

导航键 向左

KEYCODE_DPAD_LEFT

21

导航键 向右

KEYCODE_DPAD_RIGHT

22

光标移动到开始键

KEYCODE_MOVE_HOME

122

光标移动到末尾键

KEYCODE_MOVE_END

123

向上翻页键

KEYCODE_PAGE_UP

92

向下翻页键

KEYCODE_PAGE_DOWN

93

退格键

KEYCODE_DEL

67

删除键

KEYCODE_FORWARD_DEL

112

例如:

返回home操作;

airtest 引用py文件 python airtest_API_18

6> sleep API

功能:暂停时间等待,单位s,默认1.0s

airtest 引用py文件 python airtest_python_19


sleep(1.0)

7> snapshot API

功能:截图,截图当前屏幕,可在测试报告中显示

参数:

filename:保存截图为指定文件

msg:描述测试点,可以在html测试报告中体现;

airtest 引用py文件 python airtest_API_20


运行截图并添加监测点:

snapshot(msg=“截图界面是否存在淘宝安装图标.”)

查看html报告-及截图信息

airtest 引用py文件 python airtest_python_21

8> exits API

功能:判断图片是否存在,存在返回图片中心坐标,不存在返回False

参数:

V:图片

return:返回值,存在返回坐标,不存在返回False;

airtest 引用py文件 python airtest_python_22

实例:

airtest 引用py文件 python airtest_API_23

no cmdline args
start...
(390, 491)
[Finished]

测试报告内容:

airtest 引用py文件 python airtest_ide_24


airtest 引用py文件 python airtest_python_25

9> assert_exists&assert_not_exists

assert_exists功能:

判断图片是否存在,如果存在就返回图片的中心坐标,不存在就raise AssertionError

assert_exists 参数:

V:图片

msg:描述测试点,他将被记录在报告中

return:存在返回图片中心坐标,不存在就raise AssertionError

airtest 引用py文件 python airtest_airtest 引用py文件_26


assert_not_exists功能:

判断图片是否不存在,如果存在就raise AssertionErrorassert_not_exists 参数:

V:图片

msg:描述测试点,他将被记录在报告中

airtest 引用py文件 python airtest_airtest 引用py文件_27


例如:

airtest 引用py文件 python airtest_python_28


degug_info:

Traceback (most recent call last):
  File "AirtestIDE.py", line 82, in <module>
  File "AirtestIDE.py", line 58, in main
  File "app\widgets\code_runner\tracer.py", line 72, in run_pyfile
  File "D:\AirtestIDE_Obj\python.py", line 18, in <module>
    assert_not_exists(Template(r"tpl1654432855809.png", record_pos=(0.047, 0.261), resolution=(720, 1440)), "判断英雄联盟手游不存在")
  File "airtest\utils\logwraper.py", line 90, in wrapper
  File "airtest\core\api.py", line 689, in assert_not_exists
AssertionError: Template(D:\AirtestIDE_Obj\tpl1654432855809.png) exists unexpectedly at pos: (395, 909), message: 判断英雄联盟手游不存在

测试报告查询:

1.图片存在,assert_exists正常执行

airtest 引用py文件 python airtest_API_29


2.图片存在,assert_not_exists报错;

airtest 引用py文件 python airtest_airtest 引用py文件_30

10> assert_equal&assert_not_equal

assert_equal 功能:

判断第一个值和第二个值是否相等

assert_equal参数:

first:第一个对比条目

second:第二个对比条目

msg:监测点,测试报告中显示

airtest 引用py文件 python airtest_API_31


assert_equal demo:

airtest 引用py文件 python airtest_airtest 引用py文件_32


log:

airtest 引用py文件 python airtest_API_33

assert_not_equal功能:
判断第一个值和第二个值不相等

assert_not_equal参数:

first:第一个对比条目

second:第二个对比条目

msg:监测点,测试报告中显示

airtest 引用py文件 python airtest_自动化_34

assert_not_equal demo:

airtest 引用py文件 python airtest_自动化_35

log:

airtest 引用py文件 python airtest_自动化_36

五:代码篇 Airtest包

1>python-自动化Airtest-2代码篇 Airtest包