Maestro 移动端 E2E 自动化实战指南:5 分钟跑通第一个 YAML 测试流程
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
移动端 UI 测试长期被框架、驱动和平台代码绑架,用例写得慢、维护更慢。Maestro 是免费的 E2E 自动化框架,用人类可读的 YAML 描述界面操作,解释执行、无需编译,Android、iOS 与 Web 一套写法通吃。
🚀 场景切入:回归测试还在靠人手点
每次发版前,你要在真机和模拟器上各点一遍"登录 → 下单 → 结算",Android 一遍,iOS 再来一遍。UI 稍改,原有脚本跟着重写,回归越跑越慢。Maestro 的思路反过来:把测试写成 YAML 文本,跑测试的人不用懂测试框架,UI 改动时改的是几行文本,不是几百行代码。怎么装、怎么写第一个流程,往下看。
⚙️ 环境准备:安装 Maestro CLI 与系统要求
跑完这节,你本机就有可用的 Maestro,并且把示例仓库拉到手上。
- Java 17 或更高版本
- 操作系统:macOS、Linux、Windows(WSL)
- 一台可用设备:Android 真机/模拟器、iOS 模拟器(iOS 真机暂不支持)
安装命令,一行搞定:
curl -fsSL "https://get.maestro.mobile.dev" | bash装完验证:
maestro --version能打印出版本号就成功了。再克隆仓库拿全部示例:
git clone https://gitcode.com/GitHub_Trending/ma/Maestro🧪 核心工作流:最小可运行的登录断言流程
看完这里,一个"启动 → 输入 → 断言"的最小流程就能在你机器上跑起来。
输入是一个 YAML 文件,每行一次 UI 操作,保存即执行。以仓库里的 Web 登录流程为例:
- launchApp - tapOn: Username - inputText: standard_user - tapOn: Password - inputText: secret_sauce - tapOn: Login - assertVisible: ProductslaunchApp启动目标应用,tapOn点元素,inputText往聚焦的输入框填文本,assertVisible是断言(验证屏幕上某个元素是否存在),不出现即判失败。操作是一条命令:
maestro test e2e/workspaces/web/simple.yaml输出是每步的 PASS/FAIL 与总耗时,全绿即回归通过;想本地手动跑这个 Web 流程,先起仓库自带的静态服务:e2e/README.md 说明了脚本用法。
📋 关键能力速览:从命令到工作区
这节之后,你手上有张能力地图,知道哪些示例能直接抄来改。
| 能力 | 一句话说明 | 仓库参考文件 |
|---|---|---|
| 最小登录断言流程 | Web 应用登录并断言 | simple.yaml |
| 表单填写步骤 | demo 应用里的完整表单流 | fill_form.yaml |
| 子流程拆分 | 公共步骤抽出复用 | subflows/ |
| 正则断言 | 文案多变时用正则匹配 | simple.yaml |
| 滚动找元素 | 长列表滚到目标可见 | scroll.yaml |
| 智能重试 | 偶发失败自动再试 | retry.yaml |
| 设备差异化配置 | 按设备下发配置 | android_device_configuration/ |
想深入看源码,从 maestro-orchestra/ 入手,YAML 的解析、校验与执行逻辑都在那里。
🩺 排坑与调优:高频问题速查
调优这块,下面几条是跑 Maestro 最容易撞上的坎,都是同事踩过的坑。
问题:Web 流程启动即报 connection refused。→解法:静态页面没起服务,先跑e2e/ensure_fixtures再执行流程。
e2e/ensure_fixtures问题:断言偶发失败,怀疑要加 sleep。→解法:assertVisible等命令自带重试,元素没出现会一直等,多数抖动不用手写等待。
问题:同一流程在不同 Android 设备行为不一致。→解法:把差异配置写进 frontmatter 的android_device_configuration,别复制两份流程,参考 boot.yaml。
问题:想直接跑 iOS 真机,跑不起来。→解法:真机暂不支持,换模拟器。
把 YAML 流程提交进仓库、在 CI 流水线里接一条maestro test的每日回归,UI 改动引入的缺陷就能在发布前被自动拦住。想抄改现成示例,直接翻 e2e/workspaces/ 目录;贡献入口见 CONTRIBUTING.md。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考