使用方法

环境搭建与安装

Airtest 的官方安装方式推荐使用 pip 包管理器。确保你的电脑已安装 Python 3.6 及以上版本,然后打开命令行工具,执行 pip install airtest 即可完成核心库的安装。若需要图像识别相关的额外依赖(例如 OpenCV),建议同时安装 pip install airtest[full] 以获取完整功能。安装完成后,可通过 python -m airtest version 验证版本,确认安装成功。

除了 Python 库,Airtest 还提供了集成开发环境 AirtestIDE。从官网下载对应操作系统的安装包,解压后即可直接运行。IDE 内置了录制、回放、报告生成等可视化工具,适合初学者快速上手。两者配合使用时,建议保持库版本与 IDE 版本一致,避免兼容性问题。

设备连接与配置

Airtest 支持 Android、iOS、Windows 和 Web 平台的设备连接。以 Android 为例,首先通过 USB 连接手机并开启开发者模式与 USB 调试。在终端执行 adb devices 确认设备被识别。然后在 AirtestIDE 中点击“设备连接”按钮,选择“Android”并输入设备序列号,或勾选“自动连接”让工具自动扫描。连接成功后,界面会实时显示设备画面。

对于 Windows 应用,无需额外驱动,直接在 IDE 中选择“Windows”类型,然后点击“选择窗口”按钮,在屏幕上拾取目标窗口即可。Web 测试则依赖 Selenium 驱动,需提前下载对应浏览器的 chromedriver 或 geckodriver,并在脚本中指定浏览器类型。iOS 设备需配合 WebDriverAgent,连接步骤稍复杂,建议参考官方文档配置。

编写测试脚本

Airtest 脚本基于 Python 语法,核心 API 包括图像识别、UI 控件操作和设备控制。最基本的操作是使用 touch() 函数点击屏幕上的图片对象,例如 touch(Template("图标.png"))。图像识别默认采用高精度匹配,支持缩放、旋转等适应。若要输入文本,使用 text("Hello") 即可在当前焦点输入框中填入内容。

对于 Android 原生控件,可使用 exists() 判断元素是否存在,或结合 assert_exists() 进行断言。滑动操作用 swipe() 函数,参数包含起始坐标和滑动向量。如果想等待某个元素出现,调用 wait() 并设置超时时间。整个脚本结构通常按“连接设备→执行操作→验证结果→断开连接”的流程组织。AirtestIDE 支持录制模式,操作被自动转换为脚本代码,但实际生产中建议手动编写核心逻辑以提升稳定性。

运行与调试

在 IDE 中,点击“运行”按钮即可执行当前脚本。运行时会同步显示设备画面,并在每一步操作后给出识别结果和日志。若脚本报错,可在“日志”面板查看详细的异常堆栈。对于 Python 脚本,也可直接在命令行运行:airtest run "脚本路径.air" --device "Android:///设备序列号"。运行结束后默认生成 report 文件夹,包含测试步骤截图和报告。

调试技巧方面,频繁遇到识别失败时可手动调整截图模板的相似度阈值,默认值为 0.7,可通过 Template("图片.png", threshold=0.8) 调高精确度。此外,Airtest 提供了 sleep() 函数用于强制等待,但更推荐使用 wait() 配合条件判断,避免硬编码延时。如需截图帮助定位问题,可在脚本关键位置插入 snapshot() 保存当前画面。

跨平台脚本适配

编写一套脚本同时在 Android 和 Windows 上运行,需注意平台差异。Airtest 通过 device() 函数获取当前平台对象,可以判断平台类型后执行不同操作。例如在 Android 上使用模拟点击坐标,而在 Windows 上则直接调用控件接口。图像识别时,不同平台的分辨率和 UI 风格差异较大,建议为每个平台准备独立的截图模板,并放在同一脚本的不同目录下,运行时根据平台动态加载。

对于 Web 测试,Airtest 内置了 Selenium 封装,可直接使用 web_click()web_input() 等函数。当脚本同时包含 Native 和 Web 操作时(如 Hybrid 应用),需在合适时机切换上下文。Airtest 的 switch_to 方法可以指定当前操作作用于原生界面还是 WebView 页面,确保控件定位准确。

批量运行与集成

若需要在多台设备上并行执行测试,Airtest 支持多设备实例。在脚本中循环调用 connect_device("Android:///序列号1")connect_device("Android:///序列号2"),每次连接后开启一个新线程执行任务,注意避免设备资源冲突。也可利用 Airtest 提供的 multirun 命令行工具,通过配置文件指定设备列表和测试用例,一键启动批量测试。

在持续集成中,通常将 Airtest 脚本集成到 Jenkins 等工具中。安装完所有依赖后,在 CI 节点上调用 airtest run 命令,运行结束后产物中包含报告和截图。可以添加后处理步骤将报告推送到团队协作平台或发送邮件。为了提高 CI 稳定性,建议在脚本中加入重试机制,对偶发失败的操作自动重试 1-2 次,减少误报。

常用注意事项

Airtest 的图像识别对截图质量有要求。制作模板时尽量截取特征明显、背景简洁的区域,并且避免包含动态内容(如时间、网络图标)。若测试环境分辨率不固定,可使用相对坐标替代绝对坐标,例如 touch([0.5, 0.5]) 点击屏幕正中央。脚本中涉及文件路径时,建议使用相对路径,方便在不同设备上迁移。

联网环境下的测试需注意网络延迟,可适当增加等待时间。对于 iOS 设备,每次连接都需要通过 WebDriverAgent 启动代理,首次配置可能较长,建议写一个初始化函数统一处理。最后,定期更新 Airtest 库和 IDE 版本,以获取最新的 bug 修复和平台兼容性支持。