一:Airtest 简介
   
    为了降低自动化测试的门槛,用更少的精力产出更多高效的自动化脚本,来达到提升测试效率的目的,网易推出了一整套解决方案,项目命名为Airtest Project。
    
    网易出品一个基于python 的跨平台、基于图像识别的自动化测试框架,适用于游戏、app;支持平台 AirTest在Windows、iOS、Android 款UI自动化测试工具
   
    
     下载官网:
    
    
     https://airtest.netease.com/
    
    
    
     代码库下载:
    
    
     https://github.com/AirtestProject/Airtest
    
    
    支持 WebUI自动化、android App 、IOS App 自动化测试
   
下载内容为一个免安装的压缩包,解压后自带所有的环境,自动生成脚本,自带编辑器、模拟器等;可以直接点击打开-skip-使用
    
     整个工具套件由Airtest IDE、Airtest、Poco、Airlab组成
    
   
    Airtest IDE:跨平台的UI自动化编辑器
    
    Airtest:基于python的跨平台的UI自动化测试框架,基于图像识别原理
    
    Poco:基于UI空间搜索的自动化框架
    
    Airlab:网易Airtest云测试服务
   
    
    
    二:Airtest IDE界面简介
   
    
     菜单栏与快捷方式按钮
    
    
    
    
    常用:
    
    窗口:编辑界面显示功能窗口
    
    
     辅助窗口-主要是调用一些API
    
    
    
    
    touch:触摸
    
    swipe:滑动
    
    wait:等待
    
    exist:是否存在
    
    snapshot:截屏
    
    text:输入文本
    
    keyevent:按键
    
    sleep:休眠
    
    assert_exist:断言存在
    
    assert_not_exist:断言不存在
    
    assert_equal:断言相等
    
    assert_not_equal:断言不相等
   
    
     Poco库-UI自动化框架
    
    
    针对于游戏、app
    
     
   
    
     selenium 框架
    
    
    主要做web UI自动化
    
    
    
    
     脚本区域
    
    
    点击Airtest中的操作指令,再到连接设备窗口中截图,完成一条操作步骤
   
    
    
    
     日志区域
    
    
    
    
    其中调节过滤框可以调整输出日志
   
    
     模拟器框
    
    
     
   
    
    
    三: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 日志打印
    
    
    
    
    通过选择显示日志级别,选择查询运行info;报错信息也在此打印
   
    
     功能窗口-查看日志
    
    
    
    
    选择其他浏览器可能报错-一般选择谷歌浏览器;
    
    运行事件、日志、运行结果、预览截图、匹配度等信息;
   
也可全部 成功 失败 断言 选择查看自己需要信息;
注意:调试时候可以运行选择的代码
    
     图片识别规则设置
    
    
    双击进入图片编辑模式
    
    
    
    Snapshpt&Recongnition:截图+自动识别;如下显示和识别位置
    
     
   
    show help: 帮助信息
    
    右侧:
    
    filename :文件名
    
    threshold:阈值
    
    target_pos:在图片上对应1-9,其中0与5在中央位置,位置一样
    
    rgb:是否开启彩色识别
   
    
     注释
    
    
    和python代码注释一致;# 或者快捷按键 Ctrl+/ 多行注释
   
    
    
    四:Airtest IDE 语法API
   
    
    
    1> text API
   
    
    
    确认光标在时,点击text 输入内容–需要input 信息
    
    注意:自动化时要确定方标位置
   
    text(text, enter =True,search = False)
    
    @text: 输入文本
    
    @enter 完成后自动执行enter操作,默认为True
    
    @search 完成后强制执行search操作,默认为False
   
    
    
    2> touch API
   
    
    
    点击Touch 后在右侧模拟器屏幕上点击画出–点击区域
   
截图信息自动转为代码 ==》 touch(图标信息)
    
    
    3> wait API
   
    wait api 包含4个元素:
    
    V:点击的图片或者坐标
    
    timeout:等到超市时间,默认20s
    
    interval:每次寻找的时间间隔,默认0.5s
    
    intervalfunc:图片没有找到,就执行后面函数,默认,None
    
    return :返回中心坐标,或者报错;
    
     
   
[Start running..]
no cmdline args
start...
(520, 1397)
[Finished]
上图中进行两次找图;
    wait:找到图标,并返回(520, 1397)中心坐标;
    
    执行touch点击操作
   
    为节约系统资源和时间可以:
    
     
   
    
    
    4> swip API
   
    作用:从一个位置滑动到另一个位置
    
    参数:
    
    VI:点击图片或者坐标
    
    V2:图片或者坐标
    
    vector:【x,y】录制的自动生成;记录滑动比例;向右X轴为正向,向下为Y轴为正向
    
    duration:滑动操作的持续时长,默认,0.5s
    
    
     第一种方法:
    
    
    
    
    第二种方法:
    
     
   
    
    
    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操作;
    
     
   
    
    
    6> sleep API
   
    功能:暂停时间等待,单位s,默认1.0s
    
    
    
    sleep(1.0)
   
    
    
    7> snapshot API
   
    功能:截图,截图当前屏幕,可在测试报告中显示
    
    参数:
    
    filename:保存截图为指定文件
    
    msg:描述测试点,可以在html测试报告中体现;
    
    
    
    运行截图并添加监测点:
   
snapshot(msg=“截图界面是否存在淘宝安装图标.”)
    查看html报告-及截图信息
    
     
   
    
    
    8> exits API
   
    功能:判断图片是否存在,存在返回图片中心坐标,不存在返回False
    
    参数:
    
    V:图片
    
    return:返回值,存在返回坐标,不存在返回False;
    
     
   
    实例:
    
     
   
no cmdline args
start...
(390, 491)
[Finished]
    测试报告内容:
    
    
    
     
   
    
    
    9> assert_exists&assert_not_exists
   
    assert_exists功能:
    
    判断图片是否存在,如果存在就返回图片的中心坐标,不存在就raise AssertionError
    
    assert_exists 参数:
    
    V:图片
    
    msg:描述测试点,他将被记录在报告中
    
    return:存在返回图片中心坐标,不存在就raise AssertionError
    
    
    
    assert_not_exists功能:
    
    判断图片是否不存在,如果存在就raise AssertionError
   
    assert_not_exists 参数:
    
    V:图片
    
    msg:描述测试点,他将被记录在报告中
    
    
    
    例如:
   
    
    
    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正常执行
    
    
    
    2.图片存在,assert_not_exists报错;
     
   
    
    
    10> assert_equal&assert_not_equal
   
    assert_equal 功能:
    
    判断第一个值和第二个值是否相等
    
    assert_equal参数:
    
    first:第一个对比条目
    
    second:第二个对比条目
    
    msg:监测点,测试报告中显示
    
    
    
    assert_equal demo:
   
    
    
    log:
    
     
   
    assert_not_equal功能:
    
    判断第一个值和第二个值不相等
   
    assert_not_equal参数:
    
    first:第一个对比条目
    
    second:第二个对比条目
    
    msg:监测点,测试报告中显示
    
     
   
assert_not_equal demo:
     
   
    log:
    
     
   
    
    
    五:代码篇 Airtest包
   
    
    
    1>python-自动化Airtest-2代码篇 Airtest包
   
    
     https://blog.csdn.net/weixin_42914706/article/details/125136786
    
   
 
