资讯动态

Maestro 移动 UI 自动化测试入门指南:从 YAML 流程到 AI 断言

发布时间:2026/9/11 10:34:45 来源:尧图企业网站定制
Maestro 移动 UI 自动化测试入门指南从 YAML 流程到 AI 断言【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/MaestroMaestro 是一个开源的移动与 Web 端 UI 自动化测试框架。你用 YAML 写测试步骤它负责在 Android 模拟器、iOS 模拟器或浏览器里执行并帮你处理动态界面的等待问题。对于不熟测试框架的开发者它把写定位代码这件事替换成了写人话命令这是本文要带你跑通的全部链路。 项目速览一条 YAML 就能驱动真机Maestro 的核心是人类可读的 YAML 流程 解释执行引擎。一条测试就是一个 flow 文件步骤是launchApp、tapOn、inputText、assertVisible这样的命令。流程文件即时解释、无需编译改完即跑仓库自身就用同一套 YAML 对自己的 Android、iOS、Web 驱动做端到端自测。 核心能力拆解用 flow 文件描述测试步骤一个 flow 文件由appId加一串命令组成。下面的例子来自仓库 README启动 Android 联系人应用新建联系人 John Snow 并保存。appId: com.android.contacts --- - launchApp # 启动应用 - tapOn: Create new contact - tapOn: First Name - inputText: John - tapOn: SaveappId指定被测应用命令之间按顺序执行。仓库的 e2e/demo_app/.maestro/ 目录里放了几十条现成 flow覆盖输入、手势、权限、截图对比等场景是理解每条命令最快的样本库。用自然语言做 AI 断言有些界面用text选择器不好写Maestro 提供两条 AI 命令assertWithAI接受一句自然语言断言由大模型判断当前截图是否满足assertNoDefectsWithAI则检查布局错乱、元素重叠这类视觉缺陷。命令定义在 maestro-orchestra-models 的 Commands.kt模型对接与调用逻辑在 maestro-ai 模块。- launchApp: clearState: true # 启动前清空应用状态 - assertWithAI: optional: true # 断言失败不终止流程 assertion: 登录界面可见包含用户名和密码输入框适用场景文案频繁变更的界面、视觉回归检查以及你还不确定该用哪个选择器时的兜底验证。同一套写法覆盖 Android、iOS 与 Web平台差异被收敛在仓库内部的驱动层——maestro-android/、maestro-ios-xctest-runner/和maestro-web/分别对接各自平台maestro-client/提供统一入口。对你的意义是同一个 flow 可以在三个平台各跑一遍。仓库 e2e/workspaces/wikipedia/ 下的android-flow.yaml与ios-flow.yaml就是同一业务流程的双平台对照写法。 实战从零跑通第一条测试目标 1装上 CLI。Maestro 要求 Java 17 及以上。git clone https://gitcode.com/GitHub_Trending/ma/maestro cd maestro ./gradlew :maestro-cli:installDist # 构建出 CLI 可执行文件目标 2写一个最小 flow。新建flow.yaml把appId换成你装在模拟器里的应用包名内容可以照抄上文联系人示例。目标 3执行。maestro test flow.yaml # 指定模拟器或设备后运行运行结束后终端会逐步打印每条命令的执行结果失败时附带当时截图路径你不需要额外配置报告工具。想不开终端写测试也可以装官方免费的 Maestro Studio它提供可视化 flow 编辑器和元素检查。⚙️ 进阶两个决定测试稳定性的机制显式等待。移动端 UI 加载速度不定Maestro 内置自动等待与重试不需要手写sleep()。当默认行为不够时用extendedWaitUntil显式声明等待条件- extendedWaitUntil: timeout: 10000 # 最长等 10 秒 visible: text: Gesture Tester对使用者的意义CI 上偶发失败时先检查失败命令处的waitToSettleTimeoutMs和超时设置而不是盲目加长 sleep。命令的重试与生命周期由 maestro-orchestra 模块 统一调度。MCP 服务器与 LLM 评估。Maestro CLI 内置一个 MCP 服务器把list_devices、take_screenshot、inspect_screen、run等 8 个工具暴露给大模型让 AI Agent 可以对话式地驱动测试。项目自己用另一个 LLM 当裁判LLM-Judge来判定工具调用是否正确评估配置见 maestro-cli 的 MCP 评估文件。这说明它的 AI 能力路径是被持续量化验证的而不是演示性质。 实用贴士环境门槛只有一个Java 17 及以上装完用java -version确认。给 flow 加tags字段可以像仓库那样把预期通过passing与预期失败failing的用例拆成两套分别执行。手写选择器不确定时先用assertWithAI兜底跑通再逐步替换为assertVisible等确定性命令降低 AI 调用成本。AI 命令通过环境变量MAESTRO_CLI_AI_KEY配置密钥OpenAI 与 Anthropic 的 key 都支持。用例变多后云端并行执行可以把总耗时压缩最多 90%Maestro Cloud 宣传口径本地跑不动的回归可以分批上云。从你正在维护的某个应用里挑一条最常用的操作路径——比如启动、登录、进入首页——先写成 5 行以内的 flow 文件跑通它。跑通之后下一条要写的流程就已经有模板可抄了。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价