网易出品,基于图像识别 + 控件识别的跨平台UI自动化测试框架。不用写复杂代码,截图就能写脚本。


目录

  1. Airtest是什么
  2. 为什么选择Airtest
  3. 核心概念:双引擎架构
  4. AirtestIDE安装与界面
  5. 连接设备
  6. 5分钟上手:录制你的第一个脚本
  7. 脚本结构与运行方式
  8. 常见问题排查
  9. 总结

一、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 其他工具

对比维度AirtestAppiumSelenium
定位方式图像+控件控件(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(控件识别)控件定位更精准稳定
弹窗/ToastAirtest(图像识别)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篇。建议边看边操作,连接真机跟着录制一遍,效果最好。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐