Maestro 移动测试上手指南:5 分钟写出能跑的 YAML 用例
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
写 UI 自动化用例的人常被问:"这条用例到底测没测到那个按钮?"失败时,日志只给一句元素没找到,排查全靠猜。Maestro 移动测试的思路是把步骤写成 YAML 文件,再交给 CLI 或可视化 Studio 在真机、模拟器、浏览器上回放,每一步有记录、失败点看得清。
装好 Maestro,5 分钟看见第一条用例跑起来
前提只有一个:Java 17 以上。然后:
git clone https://gitcode.com/GitHub_Trending/ma/maestro cd maestro bash installLocally.sh脚本会把构建好的 CLI 装进~/.maestro/bin,新开终端敲maestro就能看到命令列表。仓库里 e2e/workspaces/ 目录预置了一组示例流程,打开其中一个 YAML 读三行,就能理解整个语法长什么样。想可视化点选屏幕来构建用例的话,maestro studio会提示你去下载独立桌面版 Studio,装好后左边是元素面板、右边是设备画面,点哪步生成哪步。
YAML 写用例:Maestro 移动测试的四种常用能力
📄用例即文本,评审不费口舌场景:新人想看懂"登录成功"到底验证了什么。操作:打开一个
.yaml文件,launchApp、tapOn、assertVisible一列排开。效果:步骤、输入、断言全在明面上,改一行就能跑,不用编译。📱同一份用例,三端都能回放场景:Android、iOS、网页版要分别回归。操作:在 YAML 头部用
tags区分平台,必要时换个appId。效果:maestro-android/ 与 maestro-ios/ 两套驱动负责各自平台,CI 里按标签分流执行即可。⏳少写 sleep,少出假失败场景:列表要转圈一秒才加载完,硬编码等待时过时炸。操作:什么都不写,直接
assertVisible目标元素。效果:引擎自动等元素出现再判定,动态页面不容易出 flaky。🔍失败时能看见现场场景:断言挂了,怀疑选择器写错。操作:
maestro print-hierarchy导出元素树,或maestro record录一段执行视频回放。效果:属性对不对、点没点到,不用靠回忆。
跟着做一遍:给"发笔记"流程写一条回归用例
参考用了电商购物,这里换个场景:社区笔记 App 的发布链路。
- 新建
flows/publish_note.yaml,头部写清appId,和 e2e/workspaces/wikipedia/ 里的示例保持同一写法。 - 先起一条
assertVisible等发布入口出现,作为整条流程的"闸门"。 - 模拟一次真实发布:填标题、写正文、插一张图、加上话题标签。
- 最后一条断言校验发布按钮进入可点击状态,代表流程走通。
- 运行后逐条看输出,卡在哪一步、屏幕上长什么样,报告里都有。
appId: com.example.notes --- - launchApp - assertVisible: "写笔记" - tapOn: "写笔记" - inputText: "周末的咖啡店" - inputText: "今天测试了新的发布流程" - tapOn: "添加话题" - assertVisible: "发布"用例就是这几行文本。之后每次发版前跑一遍,回归结果不再依赖某个人"记得测过"。
元素定位不准、web 用例跑不动?逐个对号入座
遇到"Element not found" → 先导出元素树再猜跑
maestro print-hierarchy看这一刻屏幕上真实存在的元素和属性,很多选择器失效是因为文案带空格、属性被平台重写,照着树改就行。遇到断言时好时坏 → 把 sleep 全删掉手动等待才是超时和假失败的常见来源,引擎的自动等待覆盖绝大多数加载场景;确实慢的页面,加大断言超时而不是补 sleep。
遇到 web 用例报元素找不到 → 先确认静态服务起了仓库 e2e/ 里
ensure_fixtures会帮你把 fixture 服务拉起来并等到端口真正应答,run_tests web的 CI 流程就是这么编排的,本地手跑同样要先起服务再执行--platform web --headless。遇到本地没有设备 → 让模拟器替你值班CLI 提供
maestro start-device类命令拉起模拟器;真机、模拟器和 CI 之间用 tags 分流,一条用例不需要为每台设备单独维护。
收尾
开头那个"到底点没点中"的问题,到这里有了答案:用例写成 YAML,每一步点哪、验哪都摆在文件里,失败时对着元素树和视频回放排查,不用凭印象猜。今天就可以先写一条五行的最小用例,让它在模拟器上跑起来。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考