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更成熟 - 需要大量并发的高性能场景 - 对图像变化非常敏感的场景图标频繁更新二、为什么选择Airtest2.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# -*- encodingutf8 -*- __author__ 测试工程师 from airtest.core.api import * # Airtest图像识别API from poco.drivers.android.uiautomation import AndroidUiautomationPoco auto_setup(__file__) # 用图像识别点击开始游戏按钮游戏界面 touch(Template(rstart_btn.png)) # 用Poco点击登录按钮APP标准页面 poco AndroidUiautomationPoco() poco(登录).click() # 用图像识别验证结果 assert_exists(Template(rsuccess.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. 检查ADBAndroid调试桥 # 选项 → 设置 → 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设备需要Macbash# 前置条件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 WiFibash# 第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# -*- encodingutf8 -*- __author__ 测试工程师 from airtest.core.api import * auto_setup(__file__) # 回到桌面 keyevent(HOME) sleep(1.0) # 点击计算器图标 touch(Template(rtpl1654245123456.png, record_pos(0.2, 0.5), resolution(1080, 1920))) sleep(1.0) # 输入 1 touch(Template(rtpl1654245123457.png, record_pos(-0.3, 0.2), resolution(1080, 1920))) sleep(0.5) # 输入 touch(Template(rtpl1654245123458.png, record_pos(0.2, 0.2), resolution(1080, 1920))) sleep(0.5) # 输入 2 touch(Template(rtpl1654245123459.png, record_pos(-0.1, 0.2), resolution(1080, 1920))) sleep(0.5) # 输入 touch(Template(rtpl1654245123460.png, record_pos(0.2, 0.3), resolution(1080, 1920))) sleep(0.5) # 验证结果 assert_exists(Template(rtpl1654245123461.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# -*- encodingutf8 -*- __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版本不兼容重启ADBadb kill-server adb start-server连接后操作不响应权限不足检查是否允许USB调试弹窗多设备时连错没指定设备通过设备序列号指定8.2 图像识别问题问题可能原因解决方法找不到图片截图和设备分辨率不匹配重新截图确保在同一设备上截图偶尔找不到网络波动导致画面加载慢增加sleep()等待时间点错位置相似元素干扰缩小截图范围截得更精准8.3 常见错误速查python# 错误1找不到模板图片 # ImageNotFoundError: Template not found # 解决检查截图是否存在或重新截图 # 错误2设备未连接 # DeviceConnectionError # 解决检查设备连接状态点击刷新 # 错误3ADB端口冲突 # adb server version doesnt 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篇。建议边看边操作连接真机跟着录制一遍效果最好。