Maestro AI 测试指南:5 分钟跑通第一条自然语言断言
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
界面一改版,移动 UI 自动化测试脚本就成片报红。你不用逐个修定位,Maestro 的 AI 能力让你只写"测试意图",它自己找元素、做判断。下面这条路线,从零到第一条 AI 断言只要 5 分钟。
它把测试变成了什么
Maestro AI 的定位一句话:把"写脚本"变成"写意图"。
- 自然语言断言:你用一句大白话描述期望,它负责找元素、比对结果。
- 视觉缺陷检测:它直接看截图,找出布局错乱、元素重叠这类肉眼看才费劲的问题。
- 跨平台统一:同一份 flow 跑 Android 和 iOS,AI 帮你抹平两端的控件差异。
核心能力逐条拆解
自然语言断言怎么写
它能做什么:把一句中文断言翻译成真实操作。你不用先摸清应用的视图树,也不用记元素 ID。
- launchApp: clearState: true - assertWithAI: assertion: 登录界面可见,包含用户名和密码输入框 - tapOn: 登录使用注意:assertion里写业务期望,不写定位细节。找不到元素时 AI 会重试;判断不确定时,加optional: true让它只警告不挂流程。
视觉缺陷检测怎么配
它能做什么:对当前界面做一次"体检",专挑布局类毛病。
- tapOn: 缺陷测试 - assertNoDefectsWithAI使用注意:assertNoDefectsWithAI默认optional为 true,即检出缺陷只提示、不算失败。正式流程里建议保留这个默认值,先观察再收紧。
跨平台跑同一份 flow
它能做什么:一份 YAML,两端复用。AI 会自动适配平台特有交互,比如 Android 的返回键、iOS 的侧滑手势。
- launchApp: clearState: true - back - assertWithAI: assertion: 已回到上一级页面使用注意:back这类命令两端语义由 Maestro 各自实现,你不用写 if-else。示例见测试工作区 e2e/workspaces/,里面有 Wikipedia 等应用的 Android、iOS 双端 flow。
5 分钟上手:从克隆到第一条 AI 断言
- 📌 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ma/maestro,然后cd maestro。此时你应看到包含maestro-ai目录的仓库结构。 - 构建 AI 模块:
./gradlew :maestro-ai:installDist。构建完成后,启动脚本会出现在./maestro-ai/build/install/maestro-ai-demo/bin/maestro-ai-demo。 - 配置密钥:
export MAESTRO_CLI_AI_KEY=sk-...(OpenAI 或 Anthropic 的 Key 都支持)。配置后该环境变量会被 AI 模块读取,缺了它 AI 命令会直接报错。 - 写最小 flow:新建
first_ai.yaml,内容就用上面"自然语言断言怎么写"里的三行加appId。文件保存后,你应看到一份能独立运行的 YAML。 - 运行验证:
./maestro test first_ai.yaml。此时你应看到 AI 断言逐条执行、逐条通过。
想不连真机先试试?maestro-ai-demo还能直接对一张截图做缺陷检测:
maestro-ai-demo foo_1_bad.png它是独立 demo,适合先确认密钥配对了,再上真机跑 flow。AI 功能源码见 maestro-ai/src/。
进阶:MCP 服务器与稳定性机制
Maestro 的 MCP 服务器把测试能力封装成 AI 可调用的工具。评估配置 maestro-cli/src/test/mcp/full-evals.yaml 里列出了工具面:list_devices、take_screenshot、run、inspect_screen、cheat_sheet、list_cloud_devices、run_on_cloud等 8 个。AI 拿到这些工具后,可以自主完成"看屏幕、选动作、跑 flow"的闭环。
评估用 LLM-Judge 给每次工具调用打分,阈值 0.8:低于这条线,说明模型选错了工具或传错了参,该调用不达标。
稳定性靠两层机制:
extendedWaitUntil:把"等多久"变成"等什么"。你声明要等谁出现(visible)或消失(notVisible),并给定timeout。它替代写死的 sleep,可复现性更好。- 自适应重试:内置稳定性检测,发现界面仍在动就自动重做这一步,减少"应用没加载完就点"这类偶发失败。
- extendedWaitUntil: visible: 登录按钮 timeout: 10000两层叠起来,同一条 flow 在不同时间、不同设备上更容易跑出一致结果。
API 成本怎么压下来
三级策略,逐级见效:
- 用例缓存:重复跑的场景直接复用历史分析,不重复调模型。
- 模型分级:简单断言走轻量模型(如 Claude-3-5-Haiku),复杂场景才上大模型。
- 增量分析:只处理界面变化区域,token 消耗随改动量走。
实操建议:日常回归全部走缓存和轻量模型;只在新增页面、大改版时切到强模型重新分析一次。
常见疑问
AI 断言失败等于测试挂了?是的,除非你显式加了optional: true。加了的断言失败只告警,不中断流程。
只能测 Android 吗?不是。Android、iOS 都能跑,同一份 flow 双端复用,AI 自动适配平台差异。
AI 断言要不要一直联网?要。assertWithAI和assertNoDefectsWithAI依赖模型服务,需要MAESTRO_CLI_AI_KEY。其余命令离线可用。
怎么控制 API 花费?按上一条"API 成本怎么压下来"的三级策略来,再配合optional避免无谓的重跑。
下一步
先从「5 分钟上手」把第一条 AI 断言跑通,再翻 maestro-ai/README.md 看完整 demo 用法。平台差异、稳定性机制想深究,直接看 maestro-cli/src/test/mcp/ 里的评估配置。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考