Maestro 从零到实战:用 YAML 测试流搞定 UI 自动化测试
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
还在手动点按、逐帧截图做回归吗?Maestro 是开源UI 自动化测试框架,用人类可读的YAML 测试流即可在 Android、iOS 与 Web 上跑端到端用例。
⚡ 项目速览
- 跨平台:支持 Android、iOS 与 Web(含 React Native、Flutter、混合应用),模拟器或真机都能跑。
- YAML 测试流:用
launchApp、tapOn、assertVisible等命令描述交互,无需编译。 - 内置智能等待:自带抗抖动与自动等待,处理动态 UI 不必手写
sleep()。 - 上手成本低:一条脚本装好,测试流解释执行,改完即跑。
🚀 环境与安装
Maestro 运行依赖Java 17或更高版本,先确认环境:
java -version版本达标后,用官方脚本一键安装(macOS、Linux、Windows WSL 通用):
curl -fsSL "https://get.maestro.mobile.dev" | bash装完新开一个终端,运行下面命令验证:
maestro如果终端里打印出 Maestro 的帮助信息,说明安装成功。装好之后,我们先跑通一个最小示例建立信心。
最小可运行测试流
下面这个用例做一件事:启动联系人应用,点进新建联系人,断言姓名输入框出现。把它存为flow.yaml:
appId: com.android.contacts --- - launchApp - tapOn: "Create new contact" - assertVisible: "First Name"然后执行:
maestro test flow.yaml看到Maestro has completed execution successfully,第一个用例就跑通了。接下来看核心命令怎么组织。
⚙️ 核心命令速查
Maestro 的命令按功能分四类,日常用例基本靠这几条组合:
启动类——控制应用生命周期
- launchApp # 启动应用 - killApp # 结束应用交互类——模拟点击与滑动
- tapOn: "Login" # 按文本点击 - swipe: down # 向下滑动输入类——处理文本框
- inputText: "John" # 输入文本 - eraseText # 清空输入框断言类——校验界面状态
- assertVisible: "Credentials are correct" - assertNotVisible: "Error"元素定位除了文本,还能用id或index精确命中重复项。命令组合熟了就上完整实战。
📱 完整实战:新建联系人
场景是在联系人应用里创建一个新联系人。完整测试流如下:
appId: com.android.contacts tags: - android --- - launchApp - tapOn: "Create new contact" - tapOn: "First Name" - inputText: "John" - tapOn: "Last Name" - inputText: "Snow" - tapOn: "Save"保存为contacts_flow.yaml后运行:
maestro test contacts_flow.yaml预期:终端逐步回显每条命令执行成功,最后出现Maestro has completed execution successfully,联系人列表里能看到 John Snow,即为成功。跑的过程中难免踩坑,下面几个高频问题一并给你兜底。
排障与调优
- 元素定位不到:多为文本不唯一或该用控件
id。改用id定位,或给tapOn加index指定第几个。 - 断言偶发失败:动态内容没加载完。给该断言加
optional: true,或调整步骤顺序让元素先渲染。 - 环境冲突:系统里存在多份 Maestro 或旧 Java。用
which maestro和java -version核对,确认 Java 是 17+。 - CI 不稳定:应用残留上次的状态。在
launchApp里加clearState: true每次重置。
延伸资源
- 完整示例集:按功能组织的演示应用与用例。
- 维基百科实战 flow:带标签的端到端示例。
- 安装脚本:查看安装与 PATH 配置的底层逻辑。
照着跑一遍,你就有了从零到实战的完整链路。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考