官网:https://airtest.doc.io.netease.com/
其他笔记:
AirtestIDE 基础使用——五分钟上手自动化测试
玩转微信小程序自动化测试 持续集成实践
一份漂亮的Airtest批量执行案例脚本并聚合报告的方法
目录
开发环境准备
使用AirtestIDE来编写脚本,只需要在 官网下载最新版本AirtestIDE,解压即可直接使用。AirtestIDE内置了Python3.6.5,airtest和poco环境,本地无需安装python环境就能直接使用。
如果想要使用其他需要安装的Python第三方库,或者Python2环境,则需要进行本地python的 环境部署 ,然后在AirtestIDE设置中添加本地的Python.exe路径,详情参考 IDE配置。
在AirtestIDE中新建的脚本,后缀都为 .air
,但实际上在运行的时候, 运行的是.air目录下的同名.py文件 。
脚本调试
目前AirtestIDE暂不支持断点调试功能,因此调试脚本只能通过print
等较为简单的方式。但是由于Airtest框架涉及到图像识别的准确率问题,需要反复运行和调试才能确定合适的图片与识别阈值,因此IDE特别提供了一种 选中部分代码单独运行
的调试功能(如下),需要注意的是,该单独运行代码的功能不会执行到脚本中其他代码里的内容,可能会出现别处的变量未能初始化等情况(因此不支持poco)。
IDE还提供了一个图片截图预览功能,在脚本编辑区内双击图片,会弹出图片编辑器,在图片编辑器内点击 Snapshot Recognition
按钮,将会截取当前的手机屏幕画面,并且进行一次识别,识别成功的话会在截图上面标注出识别区域,方便进行截图的调试。
Mac Airtest图片编辑器疑有BUG,点击图片编辑器的右下角的OK或Cancel键后,整个IDE都会卡死,已提交Issue
目前图片识别中,每次识别时,只要识别结果的可信度>阈值 threshold
即认为是识别通过。如果识别到错误的位置,可以通过调节 threshold
进行准确度调整。
Android 真机USB连接
测试机:华为
- 开启开发者模式:进入设置->系统->关于手机,多次点击版本号后进入开发者模式;
- 设置开发人员选项:允许USB调试、连接USB时总是弹出提示、监控ADB安装应用、仅充电模式下允许ADB调试(可选)
- 关闭电脑上已经安装的手机助手软件, 使用USB线连接手机,手机上出现USB连接方式(传输照片、传输文件和仅充电),选择"传输照片",如果在第二步中设置了仅充电模式下允许ADB调试,则需要选择"仅充电"选项;
- 点击Airtest点击列表内对应设备的 Connect 完成连接, 若设备未刷出,点击 refresh ADB 按钮设备列表将会刷新;
Airtest
基于图像识别的无侵入式测试框架。
初始化
# -*- encoding=utf8 -*-
from airtest.core.api import *
auto_setup(__file__) #自动初始化设备
录制airtest语句
- 辅助按键录制脚本
在AirtestIDE的Airtest录制辅助窗内,包含有三种类型的录制按钮:
点击某个按钮后,在设备画面上按下鼠标左键进行截图框选,抬起鼠标左键完成框选。对应操作语句会自动插入编辑器脚本中。
- 脚本自动录制
点击自动录制按钮后,使用鼠标操作设备画面,对应操作语句会自动插入到编辑器脚本中(不好用)。
airtest.core.api
Airtest的常用API大部分都列在了AirtestIDE里的Airtest辅助窗中,在使用各种常见的截图语句时,鼠标移动到按钮上即可看到每个接口的常用参数与返回值信息,非常方便。
Poco
基于UI控件识别的测试框架
API文档:https://poco.readthedocs.io/en/latest/source/poco.proxy.html#poco.proxy.UIObjectProxy.exists
poco.exceptions module: https://poco.readthedocs.io/en/latest/source/poco.exceptions.html
初始化
切换Poco应用类型时,脚本编辑框会弹出提示插入初始化Poco代码的通知窗。 确认Poco应用类型正确后,确认插入光标位置后,点击 'Yes'
即可插入对应的Poco初始化代码。
- Unity3D
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
- Android native APP
from poco.drivers.android.uiautomation import AndroidUiautomationPoco