Airtest自动化测试入门第一篇:环境搭建与5分钟上手
·
网易出品,基于图像识别 + 控件识别的跨平台UI自动化测试框架。不用写复杂代码,截图就能写脚本。
目录
一、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.x
4.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顶部工具栏的 ▶ 运行按钮
或按快捷键 F5
6.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篇。建议边看边操作,连接真机跟着录制一遍,效果最好。
更多推荐
所有评论(0)