Maestro 移动 UI 自动化测试快速指南:5 分钟跑通你的第一个 YAML 用例
2026/9/11 13:10:02 网站建设 项目流程

Maestro 移动 UI 自动化测试快速指南:5 分钟跑通你的第一个 YAML 用例

【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro

如果你还在靠人工点按来回 Android、iOS 甚至 Web 应用做回归,Maestro 值得你停下来看十分钟。它把 UI 测试写成几行 YAML,由解释器逐步执行,同一套流程能覆盖三个平台。本文按"先踩坑、再上手、后拆解"的顺序讲清楚它到底怎么干活。

手写点按测试有多烦 🙄

先说痛点。你大概率干过这种事:改完一个按钮,得手动把登录、下单、退出再点一遍;换个分辨率更小的机型,又得重点;等界面还没加载完就点了下一项,脚本直接飘红。更麻烦的是,Android 用一套、iOS 再写一套、Web 还得换 Selenium,三套脚本三套维护。

Maestro 想砍掉的正是这些重复劳动。它的思路很直接:把"点开、输入、断言"这些动作写进一个文本文件,工具负责在设备上真实操作并等待。你不需要为每个平台单独搭环境,也不用等编译——改完 YAML 直接重跑就行。

环境安装三步走,跑通第一个流程 ⚡

先确认你有 Java 17 或更高版本,因为 Maestro 的 CLI 是 Kotlin/JVM 写的:

java -version

装工具只需一条脚本命令(支持 macOS、Linux 和 Windows WSL):

curl -fsSL "https://get.maestro.mobile.dev" | bash

新建一个文件contacts.yaml,内容就七行:

appId: com.android.contacts --- - launchApp - tapOn: "First Name" - inputText: "John" - assertVisible: "John"

跑起来:

maestro test contacts.yaml

appId告诉它拉起哪个包名;---分隔元信息和步骤;后面的- launchApp- tapOn是一步步的动作。跑通之后,你手里就有了一个能反复执行的回归用例。

核心能力逐个拆:用 YAML 写 UI 测试

定位元素是 UI 测试的地基。你可以按文本找,写成- tapOn: "登录";文本对不上时,按索引更稳,写成- tapOn: { text: "选项", index: 2 }。它还能用控件 id 做组合条件,字段名保持直白,不用记一堆 API。

等待机制是它不太容易飘红的原因。别自己sleep,用断言去逼它等:- assertVisible: "加载中"会一直等到目标出现,- assertNotVisible: "加载中"则反之等它消失,动画场景还能配- waitForAnimationToEnd

截图断言适合验证视觉回归,assertScreenshot会把当前屏幕和基准图比对,超阈值的差异判为失败。下面这张就是它故意跑挂时的样子——绿色色块和那句红字,等于把"这里本该失败"摆给你看:

一个真实场景演练:装 App、登录、过弹窗 📱

真实流程很少是直线,它会分支、循环、吃变量。看仓库里现成的例子——在应用商店里装一个应用:

appId: com.android.vending --- - launchApp - tapOn: "Search for apps & games" - inputText: Twitter - tapOn: text: twitter index: 1 - tapOn: Install

index: 1专门用来处理搜索结果里同名的多条控件,inputText之后不急着点,交给定位器自己去匹配。

再往后还有条件分支、repeat/until这类循环、以及用env传变量——同一份流程换个账号就能复用。更完整的真实用例可以直接翻 e2e/workspaces/,里面是 Wikipedia、Web 视图等一整套能跑起来的样例工程。

从单兵到团队:Studio、Cloud 与 CI 集成

一个人写流程,团队要的是并行和可复现。

  • Studio:桌面端可视化 IDE,拖出来的就是 YAML,还带元素检查器和 AI 辅助,适合不熟语法的同事先上手。
  • Cloud:把几百条流程丢到专用基础设施上并行跑,官方口径是能砍掉约 90% 的总等待时间,环境固定、结果可复现。
  • CI:把maestro test塞进流水线,每次提交自动跑。在 GitHub Actions 里大概长这样:
- run: curl -fsSL "https://get.maestro.mobile.dev" | bash - run: maestro test ./tests/

两段分别是装工具和跑用例,./tests/换成你放 YAML 的目录即可,剩下的交给流水线触发。

学习路线:跳进源码和文档

想看它内部怎么把一行- tapOn变成设备上的真实操作,顺着这条线读:命令模型定义在 maestro-orchestra-models/,每个动作对应一个数据类;解析和执行引擎在maestro-orchestra/;平台驱动则拆成maestro-android/maestro-ios/和 Web 侧的 WebDriver。项目整体说明见 README.md。

给你三条能立刻做的起步建议:

  1. 今天就用上面contacts.yaml那种七行模板,把你最常回归的一条链路写成流程并跑通。
  2. 下周给其中两个重复步骤加上assertVisible/assertNotVisible,把手动等待的地方替换掉。
  3. 再把它接进 CI,让每次提交自动触发,把"人工点按"从日常工作里彻底清出去。

【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询