Airtest自动化测试入门第一篇:环境搭建与5分钟上手
网易出品,基于图像识别 + 控件识别的跨平台UI自动化测试框架。不用写复杂代码,截图就能写脚本。
目录
- Airtest是什么
- 为什么选择Airtest
- 核心概念:双引擎架构
- AirtestIDE安装与界面
- 连接设备
- 5分钟上手:录制你的第一个脚本
- 脚本结构与运行方式
- 常见问题排查
- 总结
一、Airtest是什么
1.1 一句话理解
Airtest是网易推出的跨平台UI自动化测试框架,最大的特点是基于图像识别——你只需要截图,它就能找到按钮并点击。
1.2 它不是什么
Airtest ≠ Selenium (Selenium只能测Web) Airtest ≠ Appium (Appium配置复杂,依赖元素定位) Airtest ≠ 按键精灵 (Airtest更专业,支持编程扩展) Airtest = 图像识别 + 控件识别 + 跨平台 + Python脚本1.3 核心能力
| 能力 | 说明 |
|---|---|
| 图像识别 | 截图就能定位元素,不依赖DOM/控件树 |
| 控件识别 | 通过Poco框架精准定位UI控件 |
| 跨平台 | Android、iOS、Windows、Web、小程序 |
| 录制回放 | 操作手机自动生成代码,零基础也能用 |
| Python脚本 | 基于Python,可编程扩展 |
| 报告生成 | 自动生成HTML测试报告 |
1.4 适用场景
✅ 适合: - 游戏自动化测试(图像识别天生适合游戏) - APP自动化测试(Android/iOS) - 微信小程序测试 - 桌面应用测试(Windows) - 无法获取元素树的应用 - 新手快速上手自动化 ❌ 不太适合: - 纯Web端测试(Selenium更成熟) - 需要大量并发的高性能场景 - 对图像变化非常敏感的场景(图标频繁更新)二、为什么选择Airtest
2.1 Airtest vs 其他工具
| 对比维度 | Airtest | Appium | Selenium |
|---|---|---|---|
| 定位方式 | 图像+控件 | 控件(XPath等) | 控件(XPath等) |
| 环境搭建 | ⭐ 简单(IDE一键安装) | ⭐⭐⭐ 复杂 | ⭐⭐ 中等 |
| 上手难度 | ⭐ 低(可录制) | ⭐⭐⭐ 高 | ⭐⭐ 中 |
| 游戏测试 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 小程序测试 | ✅ 支持 | ❌ 困难 | ❌ 不支持 |
| 脚本语言 | Python | 多语言 | 多语言 |
| 报告 | ✅ 自带HTML报告 | ❌ 需自行集成 | ❌ 需自行集成 |
| 开源免费 | ✅ | ✅ | ✅ |
2.2 新手友好的设计
传统自动化工具: 安装SDK → 配置环境变量 → 写代码 → 调试 → 运行 → 出报告 (新手至少半天到一天) Airtest: 下载IDE → 连手机 → 录操作 → 点运行 (新手5分钟出结果)三、核心概念:双引擎架构
3.1 两大引擎
┌─────────────────────────────────────────┐ │ Airtest Project │ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ Airtest │ │ Poco │ │ │ │ (图像识别) │ │ (控件识别) │ │ │ │ │ │ │ │ │ │ 截图匹配定位 │ │ UI树精准定位 │ │ │ │ 适合游戏/动画 │ │ 适合标准APP │ │ │ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ └────────┬────────┘ │ │ │ │ │ ┌───────┴───────┐ │ │ │ AirtestIDE │ │ │ │ (一站式编辑器) │ │ │ │ 录制/回放/报告 │ │ │ └───────────────┘ │ └─────────────────────────────────────────┘3.2 什么时候用哪个引擎
| 场景 | 推荐引擎 | 原因 |
|---|---|---|
| 游戏界面 | Airtest(图像识别) | 游戏没有标准控件 |
| APP标准页面 | Poco(控件识别) | 控件定位更精准稳定 |
| 弹窗/Toast | Airtest(图像识别) | Toast没有控件树 |
| 列表滚动 | Poco(控件识别) | 控件可以swipe |
| 动画/特效 | Airtest(图像识别) | 图像比控件更直观 |
| 混合应用(H5+原生) | 两者混合 | 各取所长 |
3.3 一个脚本可以同时用两个引擎
python
# -*- encoding=utf8 -*- __author__ = "测试工程师" from airtest.core.api import * # Airtest图像识别API from poco.drivers.android.uiautomation import AndroidUiautomationPoco auto_setup(__file__) # 用图像识别点击"开始游戏"按钮(游戏界面) touch(Template(r"start_btn.png")) # 用Poco点击登录按钮(APP标准页面) poco = AndroidUiautomationPoco() poco("登录").click() # 用图像识别验证结果 assert_exists(Template(r"success.png"), "登录成功")四、AirtestIDE安装与界面
4.1 下载安装
下载地址:https://airtest.netease.com/ Windows:下载 .exe 安装包,一路下一步 Mac:下载 .dmg 安装包,拖入Applications Linux:暂不支持IDE,可使用命令行方式 当前最新版本:AirtestIDE 1.3.x4.2 界面介绍
打开IDE后,你会看到:
┌──────────────────────────────────────────────────┐ │ 菜单栏:文件 编辑 视图 选项 工具 帮助 │ ├────────┬─────────────────┬───────────────────────┤ │Airtest │ │ │ │辅助窗 │ 代码编辑区 │ 设备显示区 │ │ │ │ (手机屏幕镜像) │ │·录制 │ # 脚本代码 │ │ │·运行 │ touch(...) │ ┌───────────┐ │ │·暂停 │ swipe(...) │ │ │ │ │·停止 │ assert_... │ │ 手机画面 │ │ │ │ │ │ │ │ │Poco │ │ └───────────┘ │ │辅助窗 │ │ │ │ │ │ │ ├────────┴─────────────────┴───────────────────────┤ │ 日志区:显示运行日志和结果 │ └──────────────────────────────────────────────────┘四大区域:
| 区域 | 功能 |
|---|---|
| 辅助窗(左侧) | 录制按钮、截图管理、Poco控件树 |
| 代码编辑区(中间) | 编写Python脚本,支持语法高亮 |
| 设备显示区(右侧) | 实时显示手机屏幕,可操作 |
| 日志区(底部) | 运行日志、错误信息、报告入口 |
4.3 首次配置
python
# 打开IDE后,建议做以下配置: # 1. 设置Python解释器 # 选项 → 设置 → 自定义Python路径 # 一般会自动检测,不需要手动设置 # 2. 设置报告输出路径 # 选项 → 设置 → 报告默认输出目录 # 3. 检查ADB(Android调试桥) # 选项 → 设置 → ADB路径 # 一般IDE自带ADB,不需要额外配置五、连接设备
5.1 连接Android手机(最常用)
第1步:手机开启开发者模式
设置 → 关于手机 → 连续点击"版本号"7次 → 返回 → 出现"开发者选项"第2步:开启USB调试
设置 → 开发者选项 → 开启: ✅ USB调试 ✅ USB安装(部分手机需要) ✅ 允许屏幕重叠(部分手机需要)第3步:USB连接电脑
用数据线连接手机和电脑 → 手机会弹出"允许USB调试" → 点"允许"第4步:AirtestIDE连接
IDE右上角设备选择区 → 点击"刷新"按钮 → 看到你的设备 → 点击"连接"第5步:验证连接
连接成功后,设备显示区会出现手机屏幕画面 用鼠标点击画面 → 手机同步响应 → 连接成功!常见手机品牌特殊设置
| 品牌 | 额外操作 |
|---|---|
| 华为/荣耀 | 设置中搜索"仅充电模式下允许ADB调试",开启 |
| 小米/红米 | 同时开启"USB调试(安全设置)" |
| OPPO/一加 | 关闭"权限监控" |
| vivo | 输入*##777##*进入开发者选项 |
| 三星 | 可能需要安装Samsung USB驱动 |
5.2 连接iOS设备(需要Mac)
bash
# 前置条件:Mac电脑 + Xcode # 第1步:安装依赖 pip install tidevice # 第2步:USB连接iPhone # 第3步:在IDE中选择iOS设备连接 # 注意:iOS测试功能相对Android有限制5.3 连接Windows窗口
# 方法一:通过窗口标题连接 # IDE设备列表 → 选择"Windows" → 输入窗口标题 → 连接 # 方法二:通过代码连接 from airtest.core.api import * connect_device("Windows:///窗口标题")5.4 无线连接(ADB WiFi)
bash
# 第1步:先用USB连接,确认ADB正常 adb devices # 第2步:开启TCP/IP模式 adb tcpip 5555 # 第3步:拔掉USB,用WiFi连接 adb connect 手机IP地址:5555 # 例如:adb connect 192.168.1.100:5555 # 第4步:在IDE中刷新设备列表,连接六、5分钟上手:录制你的第一个脚本
6.1 目标
自动打开计算器APP,输入
1 + 2 =,验证结果是3。
6.2 操作步骤
第1步:新建脚本
IDE菜单栏 → 文件 → 新建 → 选择 .air 项目 → 输入名称"calculator_test"第2步:连接手机
确保手机已连接,设备区能看到手机画面第3步:开始录制
点击左侧Airtest辅助窗的 🔴 录制按钮第4步:操作手机
在设备区依次操作: ① 回到桌面(按Home键) ② 点击计算器图标 ③ 点击数字 1 ④ 点击运算符 + ⑤ 点击数字 2 ⑥ 点击 = ⑦ 查看结果是否为 3第5步:添加断言
点击辅助窗的"断言"按钮 → 在设备区框选显示"3"的区域 → 自动生成断言代码第6步:停止录制
再次点击录制按钮(或按Esc)停止录制6.3 生成的代码
python
# -*- encoding=utf8 -*- __author__ = "测试工程师" from airtest.core.api import * auto_setup(__file__) # 回到桌面 keyevent("HOME") sleep(1.0) # 点击计算器图标 touch(Template(r"tpl1654245123456.png", record_pos=(0.2, 0.5), resolution=(1080, 1920))) sleep(1.0) # 输入 1 touch(Template(r"tpl1654245123457.png", record_pos=(-0.3, 0.2), resolution=(1080, 1920))) sleep(0.5) # 输入 + touch(Template(r"tpl1654245123458.png", record_pos=(0.2, 0.2), resolution=(1080, 1920))) sleep(0.5) # 输入 2 touch(Template(r"tpl1654245123459.png", record_pos=(-0.1, 0.2), resolution=(1080, 1920))) sleep(0.5) # 输入 = touch(Template(r"tpl1654245123460.png", record_pos=(0.2, 0.3), resolution=(1080, 1920))) sleep(0.5) # 验证结果 assert_exists(Template(r"tpl1654245123461.png", record_pos=(0, 0.1), resolution=(1080, 1920)), "计算结果应为3")6.4 点击运行
点击IDE顶部工具栏的 ▶ 运行按钮 或按快捷键 F56.5 查看报告
运行完成后 → 点击日志区右上角的"查看报告"按钮 自动打开HTML报告,包含: - 每个步骤的执行截图 - 通过/失败状态 - 执行耗时 - 错误信息七、脚本结构与运行方式
7.1 脚本文件结构
calculator_test.air/ ← .air项目目录 ├── calculator_test.py ← 主脚本文件 ├── tpl1654245123456.png ← 截图文件(图像识别用) ├── tpl1654245123457.png ├── tpl1654245123458.png ├── tpl1654245123459.png ├── tpl1654245123460.png ├── tpl1654245123461.png └── log/ ← 运行日志(自动生成) └── ...7.2 脚本头部模板
python
# -*- encoding=utf8 -*- __author__ = "你的名字" from airtest.core.api import * # 自动初始化设备连接(使用IDE中已连接的设备) auto_setup(__file__) # 你的测试代码从这里开始...7.3 三种运行方式
bash
# 方式一:在IDE中运行(推荐入门使用) # 点击 ▶ 按钮 或 按 F5 # 方式二:命令行运行(推荐集成CI使用) airtest run calculator_test.air --device Android:///设备序列号 # 方式三:Python脚本运行 python -m airtest run calculator_test.air --device Android:///7.4 命令行运行示例
bash
# 基础运行 airtest run test.air # 指定设备 airtest run test.air --device Android:///127.0.0.1:5037/设备序列号 # 指定日志目录 airtest run test.air --log log/ # 生成报告 airtest report test.air --log_root log/ --outfile report.html # 一条龙:运行 + 报告 airtest run test.air --device Android:/// --log log/ airtest report test.air --log_root log/ --outfile report.html --lang zh八、常见问题排查
8.1 设备连接问题
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 设备列表不显示 | USB调试没开 | 重新开启USB调试 |
| 连接后黑屏 | 手机屏幕熄灭 | 点亮手机屏幕 |
| 一直显示"初始化" | ADB版本不兼容 | 重启ADB:adb kill-server && adb start-server |
| 连接后操作不响应 | 权限不足 | 检查是否允许USB调试弹窗 |
| 多设备时连错 | 没指定设备 | 通过设备序列号指定 |
8.2 图像识别问题
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 找不到图片 | 截图和设备分辨率不匹配 | 重新截图,确保在同一设备上截图 |
| 偶尔找不到 | 网络波动导致画面加载慢 | 增加sleep()等待时间 |
| 点错位置 | 相似元素干扰 | 缩小截图范围,截得更精准 |
8.3 常见错误速查
python
# 错误1:找不到模板图片 # ImageNotFoundError: Template not found # 解决:检查截图是否存在,或重新截图 # 错误2:设备未连接 # DeviceConnectionError # 解决:检查设备连接状态,点击刷新 # 错误3:ADB端口冲突 # adb server version doesn't match # 解决:adb kill-server && adb start-server九、总结
核心要点
1. Airtest = 图像识别(Airtest) + 控件识别(Poco) 2. 下载IDE → 连手机 → 录操作 → 点运行,5分钟上手 3. 图像识别适合游戏和复杂UI,控件识别适合标准APP 4. .air是项目目录,包含.py脚本和.png截图 5. 支持IDE运行、命令行运行、Python脚本运行下一步学习路线
本篇:环境搭建 + 设备连接 + 5分钟录制 ↓ 第2篇:Airtest核心API详解 - touch、swipe、text、keyevent - 等待机制:sleep、wait、exists - 断言:assert_exists、assert_equal ↓ 第3篇:Poco控件识别 - Poco初始化与连接 - 控件定位、等待、操作 - Airtest + Poco混合编程 ↓ 第4篇:APP自动化测试实战 ↓ 第5篇:小程序与Web测试 ↓ 第6篇:批量运行与CI集成下一篇预告:Airtest自动化测试专题第二篇——「图像识别脚本编写:核心API详解与实战技巧」,深入掌握touch、swipe、wait、assert等核心操作。
本文约4500字,是「Airtest自动化测试专题」第1篇。建议边看边操作,连接真机跟着录制一遍,效果最好。
