news 2026/9/11 8:30:50

Maestro E2E 自动化入门:如何用 10 分钟跑通第一个跨平台登录用例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maestro E2E 自动化入门:如何用 10 分钟跑通第一个跨平台登录用例

Maestro E2E 自动化入门:如何用 10 分钟跑通第一个跨平台登录用例

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

如果你的团队在给一个应用做回归测试,而 Android 和 iOS 两端的用例各写一套,改一个 bug 就要同步维护两份脚本,那 Maestro 值得试试。它是一个开源的 E2E 自动化测试框架,同一个 YAML 用例可以直接跑在 Android、iOS 和 Web 上。下面带你把"安装 → 跑通登录用例 → 处理失败"这件事完整走完。

安装与版本验证

唯一的依赖是 Java 17 或更高版本,装好之后在 macOS、Linux 或 Windows(WSL)上直接执行:

curl -fsSL "https://get.maestro.mobile.dev" | bash export PATH="$PATH:$HOME/.maestro/bin" maestro --version

能打印出版本号,说明安装成功。

登录用例完整写法

把下面的内容保存为login.yaml。从上往下读,就是"启动应用 → 输入凭据 → 验证结果"的操作顺序:

appId: com.example.shop --- - launchApp: clearState: true # 每次重置到初始状态 - tapOn: "登录" - inputText: "standard_user" - inputText: "secret_sauce" - tapOn: "登录" - assertVisible: "我的订单"

一条命令运行:

maestro test login.yaml

有两个点值得注意。第一,clearState: true会在启动前清空应用状态,避免上一次已登录的数据污染本次运行。第二,全程没有一行 sleep:Maestro 会持续等待目标元素出现再执行下一步,页面加载慢它只会多等一会,而不会直接报错。最后一条assertVisible找不到"我的订单"时,命令返回非零退出码,可以直接接进 CI 判断成败。

异常与 Web 变体用例怎么写

把用例反过来,验证负向流程——账号被锁定时应出现提示。与正向用例的差异只在输入和断言:

appId: com.example.shop --- - launchApp: clearState: true - tapOn: "登录" - inputText: "locked_out_user" - inputText: "secret_sauce" - tapOn: "登录" - assertVisible: "您的账户已被锁定"

再把目标从手机换成 Web:只需把appId换成url,其余语法完全一致。仓库 e2e/workspaces/web/ 里有一份现成的登录用例:

url: https://www.saucedemo.com/ --- - launchApp - tapOn: Username - inputText: standard_user - inputText: secret_sauce - tapOn: Login - assertVisible: Products

同样的登录操作,两端只有一行差异:启动目标怎么写。这也是你写多平台用例时的基本心智——命令不变,只改头部声明。

元素定位失败的处理 🔧

运行中出现Element not found报错,通常是目标文案变了。把精确匹配放宽为包含匹配:

- tapOn: text: contains: "登录"

有些元素只在部分场景出现(比如广告横幅),不该因为它缺席让流程失败,加optional: true即可:

- tapOn: text: "广告横幅" optional: true

断言偶发超时、重试才能过的时候,用retry包裹,最多试 3 次、间隔 1 秒:

- retry: maxAttempts: 3 interval: 1000 command: assertVisible: "加载完成"

如果想弄清引擎是如何实现这些等待与重试的,可以看看核心执行引擎所在的 maestro-orchestra/ 目录。

适不适合你的团队

如果同一批用例要覆盖多个平台、人手有限,还希望测试脚本能被非测试同学看懂,Maestro 的 YAML 流式写法很合适。反过来,如果你要做底层手势组合、验证应用内部状态或做性能测量,YAML 命令的粒度就不够了,老老实实用原生框架。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 8:30:34

标定板分辨率怎么选?深圳源头厂家选型与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 8:26:03

私域群运营机器人怎么做:欢迎、公告、节奏实战

私域群运营机器人最常见的失败,是把私聊自动回复原样搬进群里:谁说话都回、海报天天发、欢迎语比聊天还长。群是公共空间,机器人默认应该少说话。这篇讲群里到底能自动什么、怎么控节奏。 群机器人和私聊机器人不是同一套规则 私聊&#xf…

作者头像 李华
网站建设 2026/9/11 8:25:28

HyperFrame:单机处理百GB数据的轻量级DataFrame方案

说实话,第一次看到“hyperframes”这个词,我得先确认一下你指的是哪个领域的东西——自行车圈子里它指一种攀爬车/货运单车的大车架结构,新能源工厂里它指电池产线上那种钢制设备框架,视频处理里它又可能是超帧插帧技术的代称。不…

作者头像 李华
网站建设 2026/9/11 8:20:07

8.24GB内存跑2.78万亿参数:流式推理与MoE内存优化实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 8:18:18

如何在 Google Antigravity 2.0 中启用 ECC 的原生 .agents/ 布局?

如何在 Google Antigravity 2.0 中启用 ECC 的原生 .agents/ 布局? 【免费下载链接】ECC The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor an…

作者头像 李华