AirtestIDE 完全指南:从入门到实战,解放双手,实现通过图片定位元素自动化

在移动应用和游戏测试中,重复的手动操作不仅耗时耗力,还容易出现人为失误。而 AirtestIDE 作为网易出品的一站式自动化测试工具,凭借图像识别 + UI 控件识别双核心能力,无需复杂环境配置,就能快速实现移动 APP、小程序、游戏的自动化测试,成为测试工程师的必备神器。本文将从核心介绍、热门应用场景、详细教程到实战案例,带你全面掌握 AirtestIDE 的使用,新手也能快速上手!

AirtestIDE多平台备用下载

一、AirtestIDE 核心介绍

1. 什么是 AirtestIDE?

AirtestIDE 是一款跨平台、可视化的自动化测试 IDE,内置 Python3.6.5 运行环境及 Airtest、Poco 两大核心框架,支持 Windows、Mac、Linux 系统,可对 Android、iOS、Windows、Unity3D、Cocos2d-x 等多平台应用进行自动化测试。其核心优势在于 "无侵入式" 和 "低代码门槛",既适合新手快速录制脚本,也支持资深工程师自定义开发。

2. 核心优势

  • 免环境配置:解压即用,无需本地安装 Python 及依赖库,新手零门槛上手;
  • 双框架协同:Airtest(图像识别)+ Poco(UI 控件识别),覆盖不同测试场景;
  • 可视化操作:支持脚本录制、截图编辑、UI 树查看,无需死记 API;
  • 多平台兼容:支持 Android/iOS 原生 APP、微信小程序、游戏(Unity3D/Cocos)、Windows 应用;
  • 灵活扩展:支持 Python 第三方库,可集成到持续集成(CI/CD)流程,支持批量执行与报告生成。

3. 核心组件:Airtest vs Poco

框架 核心原理 适用场景 优势
Airtest 图像识别 无源码 APP、小程序、跨平台应用 无需依赖控件,快速上手
Poco UI 控件识别 有源码 APP、游戏(Unity/Cocos) 稳定性高,不受界面变化影响

二、热门应用场景

AirtestIDE 凭借强大的兼容性,在多个领域都有广泛应用,以下是最热门的 5 个场景:

1. 移动原生 APP 自动化测试

适用于电商、金融、社交类 APP 的核心流程测试,比如:

  • 电商 APP:商品搜索→加入购物车→下单→支付流程自动化;
  • 金融 APP:登录→转账→账单查询流程回归测试;
  • 优势:支持多品牌 Android/iOS 真机连接,可批量执行兼容性测试。

2. 微信 / 支付宝小程序测试

小程序无需安装,传统测试工具难以适配,AirtestIDE 可通过:

  • 手机微信打开小程序后,通过 USB 连接设备,直接识别小程序界面(图像识别 + Poco 控件识别);
  • 适用场景:小程序功能回归、多机型适配测试(尤其解决 H5 页面控件定位难题)。

3. 游戏自动化测试

针对 Unity3D、Cocos2d-x 等引擎开发的游戏,Poco 框架可直接识别游戏内 UI 控件:

  • 场景:游戏新手引导流程自动化、日常任务重复执行、战力测试(自动打怪、升级);
  • 优势:支持游戏内滑动、拖拽、长按等操作,稳定性远超图像识别。

4. 回归测试批量执行

版本迭代时,重复执行核心功能用例是测试痛点,AirtestIDE 可:

  • 编写批量执行脚本,一次运行多个.air 用例;
  • 自动生成可视化报告,标记失败用例,提升回归测试效率。

5. CI/CD 持续集成集成

支持命令行运行脚本,可无缝集成到 Jenkins、GitLab CI 等工具:

  • 场景:代码提交后自动触发自动化测试,生成报告并发送邮件通知;
  • 优势:减少人工干预,缩短测试周期,适配敏捷开发流程。

三、快速上手教程(新手必看)

1. 环境准备(30 秒完成)

  • 下载:找到官网下载,文章开始也提供便捷的下载方式。
  • 安装方式:下载压缩包后直接解压,无需安装(内置 Python3.6.5、Airtest、Poco 环境);
  • 注意:若需使用 Python2 或第三方库(如 requests),需本地配置 Python 环境,在 IDE 中指定 Python.exe 路径(参考 IDE 配置文档)。

2. Android 真机 USB 连接(关键步骤)

以华为手机为例,其他品牌流程类似:

  1. 开启开发者模式:设置→系统→关于手机→多次点击 "版本号";
  2. 开发者选项配置:允许 USB 调试、连接 USB 时弹出提示、监控 ADB 安装应用(可选 "仅充电模式下允许 ADB 调试");
  3. 连接设备:关闭手机助手,USB 线连接电脑与手机,选择连接方式(已开启 "仅充电 ADB" 则选 "仅充电",否则选 "传输照片");
  4. Airtest 连接:IDE 左侧设备列表点击 "Connect",未识别则点击 "Refresh ADB" 刷新。

3. 核心框架初始化

(1)Airtest 初始化(图像识别)

新建.air 脚本后,默认生成初始化代码,无需手动修改:

复制代码
# -*- encoding=utf8 -*-
from airtest.core.api import *
auto_setup(__file__)  # 自动初始化设备,无需手动配置
(2)Poco 初始化(UI 控件识别)

根据应用类型选择初始化方式,IDE 会自动插入代码:

  • Android 原生 APP:

    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    poco.device.wake() # 唤醒设备

  • Unity3D 游戏:

    from poco.drivers.unity3d import UnityPoco
    poco = UnityPoco()

4. 脚本录制与编写

AirtestIDE 支持 "录制 + 手动编写" 结合,新手优先用录制功能:

(1)Airtest 录制(图像识别)
  • 打开 Airtest 辅助窗(右侧),选择操作类型(touch 点击、swipe 滑动、text 输入等);

  • 点击按钮后,在设备画面框选目标区域(如 "网易云音乐图标"),自动生成代码:

    点击"网易云音乐"图标(图像识别,可双击图片修改参数)

    touch(Template(r"网易云音乐.png", threshold=0.7, target_pos=5, rgb=False))

    输入文本

    text("Once&Forever")

    滑动(从下往上)

    swipe([0.5, 0.8], [0.5, 0.2])

(2)Poco 录制(UI 控件识别)

Poco 支持 3 种模式,核心用 "冻结模式" 定位控件:

  1. 点击 IDE 顶部 "Poco Pause" 进入冻结模式(屏幕冻结,UI 树停止刷新);

  2. 在左侧 UI 树中找到目标控件(如 "text = 网易云音乐"),双击自动插入代码:

    点击"网易云音乐"APP(UI控件识别,不受图标位置影响)

    poco(text="网易云音乐").click()

    滑动列表(如推荐歌单)

    scrollView = poco(type="ScrollView")
    scrollView.focus([0.5, 0.8]).drag_to(scrollView.focus([0.5, 0.2])) # 上滑半页

5. 脚本编辑窗口核心功能(重点补充)

(1)图片编辑器:参数精细化调整

双击脚本中的图片可打开图片编辑器,支持 6 个核心参数配置,大幅提升识别准确率:

参数名 类型 作用说明 默认值 推荐配置
filename 字符串 图片文件名,修改后会生成副本(如 "网易云音乐.png") 自动生成 自定义命名(便于维护)
threshold 浮点型 匹配阈值(0.0-1.0),可信度 > 阈值则识别通过 0.7 识别错误时调至 0.8-0.9
target_pos 整型 操作位置(1-9 对应九宫格,5 为中心) 5 按钮类选 5,边缘元素选对应位置
rgb 布尔型 是否启用彩色识别(False 为灰度识别) False 色彩鲜明的元素设为 True
scale_max 整型 mstpl 算法最大匹配范围(700-2000) 800 大屏设备设为 1000
scale_step 浮点型 mstpl 算法搜索步长(0.001-0.1) 0.01 需精准匹配时设为 0.005

实用技巧:点击编辑器内「Snapshot Recognition」按钮,可截取当前手机屏幕并验证识别效果,成功会标注识别区域,方便调试。

(2)单独调试功能(避坑指南)
  • 选中 1 行 / 多行代码右键「只运行选中代码」,无需执行整个脚本;
  • 注意:调试 Poco 脚本时,需同时选中 Poco 初始化代码(否则会报 "poco is not defined" 错误)。
(3)高效操作快捷技巧
  1. 图片 / 代码模式切换:右键选择切换,纯代码模式可避免桌面自动化时识别到脚本窗口的图片;
  2. 快速注释 / 取消:选中代码按「ctrl+/」;
  3. 快速缩进 / 取消:选中代码按「Tab」缩进、「shift+Tab」取消缩进;
  4. 实用快捷功能:点击脚本名称右键,可快速打开项目目录、导出报告、压缩脚本、清理多余图片(一键删除未使用的截图)。

6. 命令行运行与报告生成

(1)运行脚本

打开终端,切换到脚本目录,执行命令:

复制代码
# 基础运行(默认使用第一台连接设备)
airtest run netease_music.air --log E:/log  # --log指定日志目录

# 可选参数(常用)
airtest run netease_music.air --device Android:///123456 --log E:/log --recording
# --device:指定设备(Android://adbhost:adbport/设备序列号)
# --recording:录制执行过程(生成MP4,嵌入报告)
(2)生成可视化报告

脚本运行后,执行以下命令生成 HTML 报告:

复制代码
airtest report netease_music.air --log_root E:/log --outfile E:/log/report.html --lang zh --export E:/export_report --plugin poco.utils.airtest.report
# --export:导出可移植报告(含图片、CSS,可发送给他人)
# --plugin:支持Poco脚本的报告展示

四、实战案例

网易云音乐核心流程自动化(含详细操作步骤)

案例背景

测试网易云音乐 "启动→搜索歌曲→播放→验证播放状态" 流程,结合 Airtest 图像识别与 Poco 控件识别,全程可视化操作,新手可直接跟随步骤执行。

前置准备
  1. 手机已安装网易云音乐 APP(包名:com.netease.cloudmusic);
  2. 手机已通过 USB 连接 AirtestIDE,设备状态显示 "Connected";
  3. 新建脚本命名为netease_music.air,IDE 自动生成 Airtest 初始化代码。
详细操作步骤(共 6 步,含 IDE 操作截图说明)
步骤 1:插入 Poco 初始化代码(适配 Android 原生 APP)
  1. 点击 IDE 顶部 "Poco" 选项卡,选择 "Android Uiautomation" 作为应用类型;

  2. 脚本编辑区弹出 "插入初始化代码" 提示,选择光标位置(初始化代码后),点击 "Yes";

  3. 自动生成 Poco 初始化代码,补充 "唤醒设备" 语句,最终代码如下:

    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    poco.device.wake() # 唤醒设备,避免黑屏

步骤 2:录制 "打开网易云音乐" 操作(Airtest 图像识别)
  1. 打开 IDE 右侧 "Airtest 辅助窗",点击「touch」按钮(操作类型:点击);

  2. 在左侧设备画面中,鼠标左键框选 "网易云音乐" 图标,松开鼠标自动生成代码;

  3. 双击脚本中的自动生成的图片(默认名如tpl1633763908637.png),打开图片编辑器:

    • 修改filename为 "网易云音乐.png",点击 OK,弹出 "确认修改文件名" 提示,选择 "Yes"(脚本目录下生成图片副本);
    • 调整threshold为 0.75(提升识别准确率),rgb设为 False(灰度识别,避免色彩干扰);
    • 点击「Snapshot Recognition」按钮,验证当前设备屏幕中能识别到图标(识别成功会标注绿色框),点击 OK 保存;
  4. 补充sleep(3)语句(等待 APP 加载),最终代码:

    点击"网易云音乐"图标(图像识别,参数已优化)

    touch(Template(r"网易云音乐.png", threshold=0.75, target_pos=5, rgb=False))
    sleep(3) # 等待APP加载完成

步骤 3:录制 "点击搜索框" 操作(Poco 控件识别)
  1. 点击 IDE 顶部「Poco Pause」按钮,进入冻结模式(设备画面冻结,UI 树停止刷新);

  2. 左侧 "UI 渲染树" 中,搜索 "searchBar";

  3. 双击该控件,脚本编辑区自动插入代码:poco(resourceId="com.netease.cloudmusic:id/searchBar").click()

  4. 补充sleep(1)语句,代码如下:

    点击搜索框(Poco控件识别,不受位置变化影响)

    poco(resourceId="com.netease.cloudmusic:id/searchBar").click()
    sleep(1) # 等待搜索界面加载

步骤 4:录制 "输入歌曲名" 操作(Airtest 文本输入)
  1. 右侧 "Airtest 辅助窗" 点击「text」按钮,在弹出的输入框中输入 "Once&Forever",点击 "确认";

  2. 脚本自动生成代码:text("Once&Forever"),补充sleep(1)语句(等待搜索结果加载),最终代码:

    输入歌曲名"Once&Forever"

    text("Once&Forever")
    sleep(1)

步骤 5:录制 "点击搜索结果" 操作(Poco 正则匹配)
  1. 再次点击「Poco Pause」解除冻结模式,设备画面恢复交互;

  2. 手动在设备上点击搜索结果列表(确保结果显示),再次点击「Poco Pause」冻结;

  3. UI 渲染树中搜索 "Once&Forever",因结果可能带歌手信息(如 "Once&Forever - Billkin"),使用正则匹配:

    • 脚本中手动修改代码为poco(textMatches="^Once&Forever.*$").wait(5).click()
    • wait(5)表示最多等待 5 秒,避免搜索结果加载延迟;
  4. 补充sleep(2)语句(等待歌曲播放),代码如下:

    点击搜索结果(正则匹配,适配带歌手信息的场景)

    poco(textMatches="^Once&Forever.*$").wait(5).click()
    sleep(2)

步骤 6:添加 "断言播放状态"(Airtest 图像识别)
  1. 设备上歌曲开始播放后,右侧 "Airtest 辅助窗" 点击「assert_exists」按钮;

  2. 框选设备画面中的 "暂停" 按钮(红色圆形按钮,如图所示),自动生成断言代码;

  3. 双击断言代码中的图片,打开图片编辑器:

    • threshold设为 0.8(暂停按钮图标固定,提高阈值提升准确率);
    • rgb设为 True(暂停按钮为红色,彩色识别更精准);
    • 点击「Snapshot Recognition」验证识别成功,点击 OK 保存;
  4. 最终断言代码:

    断言歌曲正在播放(识别"暂停"按钮)

    assert_exists(Template(r"tpl_pause_btn.png", threshold=0.8, rgb=True), msg="歌曲未播放")
    print("网易云音乐搜索播放流程测试通过!")

步骤 7:添加异常处理与退出 APP

在脚本末尾添加异常捕获和退出 APP 代码,确保脚本完整性:

复制代码
except PocoTargetTimeout:
    print("错误:未找到目标控件(可能是APP加载超时)")
except Exception as e:
    print(f"测试失败:{str(e)}")
finally:
    # 无论成功与否,均退出APP
    stop_app("com.netease.cloudmusic")
完整脚本整合
复制代码
# -*- encoding=utf8 -*-
from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
from poco.exceptions import PocoTargetTimeout

# 初始化Airtest
auto_setup(__file__)

# 初始化Poco(Android原生APP)
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
poco.device.wake()  # 唤醒设备

try:
    # 步骤1:点击打开网易云音乐(Airtest图像识别)
    touch(Template(r"网易云音乐.png", threshold=0.75, target_pos=5, rgb=False))
    sleep(3)

    # 步骤2:点击搜索框(Poco控件识别)
    poco(resourceId="com.netease.cloudmusic:id/searchBar").click()
    sleep(1)

    # 步骤3:输入歌曲名
    text("Once&Forever")
    sleep(1)

    # 步骤4:点击搜索结果(正则匹配)
    poco(textMatches="^Once&Forever.*$").wait(5).click()
    sleep(2)

    # 步骤5:断言播放状态
    assert_exists(Template(r"tpl_pause_btn.png", threshold=0.8, rgb=True), msg="歌曲未播放")
    print("网易云音乐搜索播放流程测试通过!")

except PocoTargetTimeout:
    print("错误:未找到目标控件(可能是APP加载超时)")
except Exception as e:
    print(f"测试失败:{str(e)}")
finally:
    # 退出APP
    stop_app("com.netease.cloudmusic")
脚本调试与运行
  1. 单独调试:选中每段代码(含初始化代码),右键「只运行选中代码」,验证每步操作是否正常;
  2. 完整运行:点击 IDE 顶部「运行」按钮,脚本自动执行所有步骤;
  3. 生成报告:运行完成后,执行命令生成报告,查看每步操作截图和执行结果。

五、常见问题与避坑指南

  1. 设备连接失败:检查 USB 调试是否开启、手机助手是否关闭、连接方式是否正确,可重启 ADB(IDE 中点击 "Refresh ADB");
  2. 图像识别不准确:调节 threshold 阈值、启用 rgb 彩色识别、扩大截图区域,避免动态元素(如广告);
  3. Poco 无法识别控件:确认应用类型与 Poco 初始化方式匹配(如 Unity 游戏需用 UnityPoco),部分 APP 需关闭混淆;
  4. Poco 单独调试报错:必须同时选中 Poco 初始化代码,否则提示 "poco is not defined";
  5. Mac 图片编辑器卡死:点击 OK/Cancel 后 IDE 卡死,建议调试完成后再保存,或暂时使用 Windows 环境;
  6. 报告无 Poco 步骤 :生成报告时必须添加--plugin poco.utils.airtest.report参数。
相关推荐
我就是你毛毛哥2 小时前
Linux 系统上安装 Nginx以及使用,推荐使用编译安装
linux·运维·nginx
zly35002 小时前
CentOS系统下查看与修改网卡UUID的完整指南
linux·运维·centos
Blossom.1182 小时前
基于混合检索架构的RAG系统优化实践:从Baseline到生产级部署
人工智能·python·算法·chatgpt·ai作画·架构·自动化
herinspace2 小时前
管家婆软件套接字服务器打不开怎么解决
运维·服务器·数据库
可爱又迷人的反派角色“yang”2 小时前
docker(五)
linux·运维·网络·docker·容器·云计算
天空属于哈夫克32 小时前
基于 RPA 自动化实现企业微信外部群消息触达的逻辑与实现
自动化·企业微信·rpa
chasemydreamidea2 小时前
L2 Intern-S1/InternVL 微调公式识别实践
运维·ssh
大布布将军2 小时前
⚡部署的通行证:Docker 容器化基础
运维·前端·学习·程序人生·docker·容器·node.js
天空属于哈夫克32 小时前
基于 RPA 自动化实现企微外部群消息触达的逻辑与实践
自动化·企业微信·rpa