
Maestro 移动测试快速上手5 分钟跑通第一条 YAML 用例一套脚本两端复用【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro写一套能在 Android 和 iOS 上同时跑通的 UI 测试多数团队卡在三件事两套框架各写一遍、等待逻辑靠sleep猜、元素定位得啃平台私有 API。Maestro 移动测试把这三件事压回一个方向用 YAML 写步骤同一份文件直接在 Android、iOS 和 Web 浏览器上执行无需编译。项目的官方定位是一句 tagline——Painless E2E Automation for Mobile and Web不折腾的移动端与 Web 端到端自动化。这篇文章只干两件事让你在下一节结束前拿到一条本机通过的用例然后告诉你怎么把它扩展成团队级回归。老路子卡在哪Maestro 换了什么对照一下传统写法的三个卡点判断这套工具适不适合你现在的处境两份脚本变一份。老路线是 Android 用 Espresso/UIAutomator、iOS 用 XCUITest同一个登录回归要维护两种写法。Maestro 用一个 YAML 文件覆盖两端按文案找元素比如点击写着登录的按钮在两个平台都生效仓库里的维基百科示例就是这么分文件的一份主流程e2e/workspaces/wikipedia/下按平台各挂一个子流程。等待逻辑交给断言。老脚本里散落着sleep(2)机器快时浪费时间、机器慢时直接超时。Maestro 的assertVisible这类步骤默认带轮询等待元素没出现就自己重试直到出现或超时你的流程里不需要写死任何等待时间。YAML 能直接 review。步骤是给人看的文本测试评审时不用打开 IDE改动一个用例的门槛从会写代码降到会看列表。判断标准如果你的回归脚本目前是 Android、iOS 各一份或者流程里还有写死的等待时间就从下面这条用例开始替换。最快路径装好工具跑通第一条用例一条命令装好 CLIgit clone https://gitcode.com/GitHub_Trending/ma/maestro cd maestro ./scripts/install.sh maestro --version脚本会自动拉取最新的 CLI 包装到~/.maestro并写进 PATH前置条件只有 Java 17、curl和unzip跑完后开个新终端maestro --version能打印版本号就算装好。八行 YAML 跑通第一个用例把仓库 Web 示例e2e/workspaces/web/simple.yaml的核心步骤存成first-flow.yamlurl: https://www.saucedemo.com/ --- - launchApp - tapOn: Username - inputText: standard_user - tapOn: Password - inputText: secret_sauce - tapOn: Login - assertVisible: Products执行时 Maestro 会打开这个公开登录页按标签文案找到 Username、Password 两个输入框逐字敲入账号密码点下 Login最后只有页面上出现 Products 才算通过——全程没有一行等待代码。测手机应用时把首行换成appId: 你的包名后面步骤原样照抄。然后执行maestro test first-flow.yaml 终端打印1 tests completed且退出码为 0你的第一条 Maestro YAML 用例就算跑通了。从仓库示例里抄三个能落地的场景e2e/workspaces/下的示例本身就是一份答案集挑三个方向直接抄登录回归。Web 示例e2e/workspaces/web/simple.yaml就是前面那八行的完整版maestro test e2e/workspaces/web/simple.yaml一条命令几十秒内得到通过/失败结论失败现场自带截图。相邻的simple_web_view/示例还展示了不稳定点击的解法仓库里那段 WebView 流程用retrymaxRetries: 2包住一个可能丢点击的操作配合assertNotVisible确认页面真的切走了而不是靠猜。跨平台兼容。维基百科示例是 Maestro 跨平台跑法的标准结构主流程只写公共步骤差异部分拆进subflows/Android、iOS 各一个文件只在部分平台出现的弹窗用when: visible做门控——- runFlow: when: visible: You have been logged in as logged out commands: - tapOn: text: Continue without logging in意思是这个已登出弹窗没出现时整段自动跳过出现了才点掉。主流程因此不用为平台差异写 if/else同一套步骤在两端复用。AI 辅助调试。页面改动后不必每次手写用例。执行maestro mcpCLI 会把检查屏幕、点按元素、跑整段流程等能力暴露成标准 MCP 工具供 LLM 客户端调用你用一句确认登录页输入框还在不在发指令模型自己去查屏幕、写流程、跑流程并回传结果。入口和扩展方式在 maestro-cli/src/main/java/maestro/cli/mcp/ 目录里面的 README 写清了协议边界。团队怎么把它接进日常公共步骤抽成子流程维基百科的 Android 主流程只有十几行开机引导整段抽成子流程搜索词的生成交给一段 JS 脚本输出再传给下一步——- runFlow: subflows/onboarding-android.yaml - runScript: scripts/getSearchQuery.js - inputText: ${output.result}登录、引导这类公共流程将来改动时只改子流程文件引用它的所有主流程零改动这就是团队公共步骤库的形态。接进 CI 当回归门禁CI 里执行maestro test 用例目录可整目录批量跑退出码就是结论非 0 即有失败直接挂到构建门禁上。失败截图默认落在.maestro/目录本仓库e2e/demo_app/下就有一份现成的把它作为失败产物归档复盘时不用重跑就能还原现场仓库自己的 CI 就是这么做的细节见 e2e/README.md。✅去哪继续挖e2e/workspaces/仓库内置示例库Web 页面、Wikipedia 应用、WebView 三组流程文件头都带passing标签说明官方 CI 已验证可跑通可直接当学习材料。maestro download-samples一条命令下载一套可运行的示例应用加流程不用为自家应用写任何用例就能先玩起来说明见 e2e/README.md。maestro-cli/src/main/java/maestro/cli/mcp/MCP 服务端源码想让自己的 AI 工具链接设备就从这个目录读起。社区入口与官方文档链接在 README.md 顶部Resources Community一节照着跳转即可。下一步就做一件事把上面八行示例存成first-flow.yaml让maestro test在今天打印出1 tests completed——那就是你团队流水线上的第一条用例。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考