什么是 Airtest?
Airtest 是网易游戏推出的一款跨平台 UI 自动化测试框架,基于图像识别和控件识别技术,支持对 Android、iOS、Windows 和 Web 应用进行自动化测试。它提供了 Python 脚本编写方式以及内置的录制回放功能,适合测试人员快速上手。
Airtest 的核心原理是什么?
Airtest 的核心是通过图像识别(基于 OpenCV 的 SIFT、模板匹配等算法)来定位屏幕上的元素,同时结合 Poco 控件树识别技术(类似 Appium 的 DOM 解析)实现对原生和游戏控件的高效操作。两种方式互补,图像识别无需注入代码,控件识别则更精确稳定。
Airtest 支持哪些平台?
Airtest 支持 Android(真机、模拟器)、iOS(需 macOS 环境配合 WebDriverAgent)、Windows 桌面应用,以及基于 Web 的页面(通过连接 Chrome 或 Edge 浏览器)。此外还支持部分游戏引擎如 Unity、Cocos2d、Egret 等。
如何下载和安装 Airtest?
从 Airtest 官方网站(airtest.netease.com)下载对应操作系统的客户端安装包,支持 Windows、macOS 和 Linux。安装后直接在桌面启动 Airtest IDE,无需额外配置 Python 环境(IDE 自带内置 Python 解释器和依赖库)。如果希望使用命令行或集成到 CI,也可以使用 pip 安装 airtest 库:pip install airtest。
Airtest IDE 和命令行模式有什么区别?
Airtest IDE 是图形化集成环境,提供脚本编辑器、录制回放、设备管理、日志查看等功能,适合初学者和调试。命令行模式则通过 Python 脚本直接运行,适合持续集成和批量执行测试。两者使用相同的 API,生成的脚本可以互相兼容。
如何连接 Android 设备?
确保手机开启“开发者选项”和“USB 调试”,通过数据线连接电脑。在 Airtest IDE 的设备管理窗口点击“连接设备”,选择 ADB 识别到的设备。如果连接模拟器(如夜神、MuMu),需要确认模拟器的 ADB 端口绑定正确,通常使用 adb connect 127.0.0.1:XXXX 的方式连接。
连接 iOS 设备需要什么条件?
需要一台 macOS 电脑,安装 Xcode 以及 WebDriverAgent(WDA)。通过 USB 连接 iPhone 后,在 Airtest IDE 中点击“iOS 设备”选项卡,安装并启动 WDA 即可。如果使用真机测试,还需配置开发者证书和签名。
什么是 Poco?和 Airtest 是什么关系?
Poco 是 Airtest 框架内置的控件识别工具,通过遍历应用的 UI 树来定位元素,类似 Selenium 的 find_element。Airtest 主要负责截图和图像匹配,Poco 则提供更精确的控件选择。两者可以混合使用,比如先用 Poco 点击按钮,再用 Airtest 截图验证结果。
如何录制脚本?录制后能直接运行吗?
在 Airtest IDE 中点击“录制”按钮,然后在设备屏幕上进行操作(点击、滑动、输入等),IDE 会自动将操作转换成 Python 代码。录制完成后停止录制,即可生成脚本。通常需要对代码进行微调(比如添加等待、断言),然后点击运行即可。
脚本可以跨平台复用吗?
由于不同平台的屏幕分辨率和 UI 控件差异较大,建议每个平台单独维护一套脚本。但业务逻辑相同的部分(如登录流程)可以通过封装函数实现代码复用。Airtest 提供 device 对象和平台判断方法,可以编写条件分支来处理不同平台的差异。
运行脚本时遇到“连接超时”怎么办?
首先检查 USB 线是否稳定,建议使用原装数据线。对于 Android,可以尝试重新拔插设备并执行 adb kill-server 和 adb start-server。对于 iOS,检查 WDA 是否正常运行,以及端口 8100 是否被占用。也可以在脚本中增加 auto_setup 参数设置连接超时时间。
图像识别结果不准确怎么优化?
可以尝试以下方法:一是调整设备分辨率,保持录制时的分辨率和运行环境一致;二是使用更清晰的截图,避免图片包含过多背景干扰;三是使用 threshold 参数调整匹配阈值(默认为 0.7),或者改用 scale 参数进行多尺度匹配。对动态元素(如进度条)可使用高对比度的区域作为目标。
可以在多台设备上并行运行脚本吗?
可以。Airtest 支持通过 Python 多线程或使用 airtestmultirunner 工具同时控制多台设备。需要注意每台设备需要独立的 ADB 连接,并且脚本中的 touch 等操作要指定 device 参数。官方推荐使用 multiprocessing 库来管理多设备测试任务。
Airtest 报告如何查看?
运行脚本后,Airtest 会生成一个 HTML 格式的测试报告,包含每个步骤的截图、运行结果和日志。报告默认保存在脚本所在目录下的 log 文件夹中,也可以用 --report 参数自定义输出路径。报告中会高亮显示失败步骤和对应的错误信息。
是否支持 Web 页面自动化?
支持。Airtest 通过集成 Selenium WebDriver 来实现 Web 自动化。在设备管理中连接 Chrome 或 Edge 浏览器(需开启远程调试端口),然后在脚本中使用 webview 模式,即可像操作普通网页一样进行点击、输入、断言等操作。注意 Web 模式不支持图像识别,请使用 Poco 或 Selenium 原生定位方式。
如何集成到 Jenkins 或其他 CI 工具?
在 CI 服务器上安装 Airtest 的 Python 包(pip install airtest),然后编写一个 Python 脚本调用 run_script 方法执行测试用例。使用 airtest run 命令行工具也可以直接运行。最后将生成的 HTML 报告作为 CI 的构建产物展示,或通过邮件插件发送。
Airtest 和 Appium 相比有什么优势?
Airtest 对游戏和自定义控件的支持更好,因为其图像识别能力可以处理非标准控件。同时 Airtest IDE 提供录制和可视化编辑功能,入门门槛更低。Appium 则更侧重于原生移动端应用,对 WebView 和复杂的页面元素定位更成熟。两者可以互补,对于非游戏类应用,Appium 可能更合适;游戏或混合应用建议使用 Airtest。
免费使用吗?有没有商业授权限制?
Airtest 完全免费开源,遵循 Apache 2.0 协议。可以用于个人、教育及商业项目,无需购买许可。网易官方提供社区支持,但不提供商业技术支持服务。如果企业需要专业服务,可以联系网易游戏的相关团队。
遇到无法安装或启动的问题怎么办?
首先检查操作系统版本和依赖库(如 Android 场景下需要安装 ADB 驱动,iOS 场景下需要 Xcode 工具链)。常见问题包括 Python 版本冲突(推荐 Python 3.7~3.9)、缺少 VC++ 运行时(Windows)、或权限不足。可以访问官网的 FAQ 文档或 GitHub Issues 页面查找解决方案。
如何更新 Airtest 到最新版本?
如果使用 IDE 版本,可以直接在软件内点击“检查更新”或下载最新安装包覆盖安装。如果使用 pip 安装,执行 pip install --upgrade airtest 即可。注意更新后可能需要重新安装对应的驱动程序(如 iOS 的 WDA)。建议在更新前备份旧版本的脚本和项目。