Maestro 移动 UI 自动化测试:一条命令装好,5 分钟跑通第一条用例
2026/9/11 14:55:08 网站建设 项目流程

Maestro 移动 UI 自动化测试:一条命令装好,5 分钟跑通第一条用例

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

Maestro 是一个开源的移动 UI 自动化测试框架:用人类可读的 YAML 文件写测试用例,在 Android、iOS 和 Web 的模拟器、仿真器与浏览器上跑端到端测试。它解决两个痛点——流程不用编译,页面加载不用你写 sleep。无论你是偶尔需要验证 UI 流程的开发者,还是想快速跑起一套自动化回归的测试新手,5 分钟就能跑通第一条用例。

先跑起来:一条命令安装,跑通第一条用例

环境只有一个要求:Java 17 或更高。先确认版本,再执行安装脚本:

java -version # 需 17+ curl -fsSL "https://get.maestro.mobile.dev" | bash

装完就有maestro命令可用(macOS、Linux、Windows WSL 均可)。写一个最小流程文件,用系统联系人应用做例子(此例来自官方仓库 README):

# flow_contacts_android.yaml appId: com.android.contacts --- - launchApp - tapOn: "Create new contact" - tapOn: "First Name" - inputText: "John" - tapOn: "Last Name" - inputText: "Snow" - tapOn: "Save"

执行maestro test flow_contacts_android.yaml即可,改完 YAML 立刻能跑,不经过编译。如果手头没起好模拟器,先执行maestro download-samples下载官方示例包(含示例应用和流程),跑一遍感受一下再上自己的项目。

它能做什么:断言、复用、Web 与脚本扩展

断言是一等公民。每步操作后可以跟assertVisible/assertNotVisible校验页面状态。仓库里的 Web 示例登录后断言商品列表可见,点进商品后断言列表消失;截图也能参与断言,框架自身的测试就用截图比对来验证页面渲染是否符合预期。

一套语法覆盖 Web。同一份 YAML,把appId换成url就能驱动浏览器。仓库 e2e/workspaces/ 下有成套示例:登录、滚动、返回键、iframe 内输入,每个场景一个几十行的 yaml 文件,翻一遍比读文档快。

子流程可复用。Wikipedia 示例把引导页步骤拆成子流程文件,主流程用一行runFlow引用,Android 与 iOS 各一份,主流程本身只有 6 行。

动态数据走脚本。runScript可以调用一段 JS 现场生成测试数据,结果以${output.result}写回流程;也可以先"录制"——手动操作一遍,Maestro 把动作转成 YAML。Maestro Studio 则提供可视化流程构建器和元素检查器(免费桌面应用,代码不在本仓库)。

写法与技巧:定位、等待与传参

用用户看得见的文本定位元素

tapOn: "Save"这样写最稳。元素匹配到多个时,用id(Android 视图 id 或 web 元素 id)精确指定,或用index挑第几个。仓库里的 Wikipedia 示例:

- tapOn: id: "org.wikipedia:id/search_container" - tapOn: text: "Non existent view" optional: true

可能存在的元素标optional: true,缺席时流程不失败;文本也支持正则,比如assertVisible: '.*sleek.*'

不用手写 sleep 等页面

默认行为就是"等":每次点击和断言都会自动等到元素出现或界面稳定,动态 UI 不需要手动 sleep。有动画的页面前后加waitForAnimationToEnd;网络加载重的页面,用关键元素的assertVisible当"加载完成"的信号。

同一份流程喂不同数据

流程内可引用环境变量。把账号放进 env,用runFlow加 env 参数让同一个登录流程跑不同的账号组合——这就是数据驱动测试的最小形态,不需要任何框架配套。

往深里走:模块怎么分工

仓库是多模块结构,职责清晰。maestro-cli/ 是入口:跑测试、出报告、下载示例;maestro-orchestra-models/ 定义每条 YAML 命令的数据模型(MaestroCommand);maestro-orchestra/ 负责解析与执行;maestro-android/ 与 maestro-ios 是跟设备对话的两个驱动,maestro-web 走 Chrome DevTools 协议驱动浏览器。读源码建议按 cli → orchestra-models → orchestra 的顺序。仓库外有两个配套:Studio 做可视化构建,Cloud 做云端并行执行(官方称最多可缩短 90% 执行时间)。

接进工作流:YAML 进仓库,CI 自动跑

流程文件就是普通文本,提交进仓库后天然纳入 CI,失败时退出码非零,可直接当门禁:

name: Maestro Tests on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Maestro run: curl -fsSL "https://get.maestro.mobile.dev" | bash - run: maestro test ./flows/

常见疑问:三个新手最常问的问题

支持哪些系统和应用?Android、iOS 与 Web 三端,Flutter、React Native 等跨平台与混合应用也覆盖;模拟器、仿真器、真机、浏览器都能跑,且三端语法完全一致。

免费的边界在哪?CLI 与全部开源代码遵循 Apache 2.0,本文提到的功能都在免费范围内。Studio 免费但闭源;Cloud 是付费服务,只用于云端并行执行,本地跑测试不受影响。

和 Appium 有什么区别?Appium 每个平台要配驱动,流程通常还得用编程语言写;Maestro 自带各平台驱动,YAML 写完即跑,同一套脚本三端通用。与 Espresso、XCTest、Selenium 的关系类似:它们是各平台自带的测试框架,Maestro 是站在其上统一入口的"整合层",取的是它们沉淀的等待与定位策略,而不是替代。

下一步很具体:起一个模拟器,跑maestro download-samples执行官方示例流程,通过后把appId换成你应用的包名,开始改写第一条自己的流程。

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

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

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

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

立即咨询