10分钟跑通第一个E2E测试:Maestro移动端与Web可视化自动化上手实战指南
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
每次发版前,你要手动打开 App,点登录,敲账号,等首页出来,再逐项核对。重复五次,手比脑子先累。更要命的是,换个人验证,他可能漏掉其中某一步。Maestro 是个开源的端到端测试框架:把操作步骤写成一份 YAML,一条命令就能在 Android、iOS 模拟器或浏览器里自动跑完。下面从零基础出发,带你把第一个流程跑绿,再写一条真正属于你的回归用例。
3步完成安装并看到第一个绿色通过
先确认环境里有 Java 17 及以上版本:
java -version curl -fsSL "https://get.maestro.mobile.dev" | bash maestro --version它做什么:检查 Java 环境,再一条命令装好 Maestro CLI(macOS、Linux 或 Windows WSL)。装完执行maestro --version能看到版本号,就说明装好了。
第一个测试不用自己写——仓库自带一套 Web 用例和静态服务器。在 e2e/README.md 里能找到整套说明,它要求先启动 fixture 服务器:
cd e2e ./ensure_fixtures maestro test workspaces/web/simple.yaml它做什么:ensure_fixtures启动本地静态服务器并等它真正响应;maestro test则打开浏览器,自动填入账号密码、登录示例商城,再断言商品列表可见。你在终端看到每一步依次打勾、最后出现全绿的 PASSED,浏览器里能看到页面自己完成了登录。这就是你的第一个 E2E 测试,耗时不到一分钟。
任务主线:给维基百科搜索写一条自动化流程
现在把"打开维基百科、搜一个词、确认结果页出来"这件事自动化。以下命令都在你本机的 e2e/workspaces/ 目录下执行。
新建流程文件
新建wiki_search.yaml,写入最小骨架:
appId: org.wikipedia --- - launchApp - inputText: "Maestro" - tapOn: "Search"它做什么:声明被测应用,然后依次启动 App、输入关键词、点击搜索。YAML 里没有一行等待代码,因为 Maestro 对每条命令自带轮询重试,元素没出现时会继续等,而不是立刻失败。
跑起来并加断言
maestro test wiki_search.yaml它做什么:对已安装维基百科的 Android 设备(或 iOS 模拟器)执行上面的三步。你看到每一步执行后带耗时记录,结尾 PASSED。再加一行assertVisible: "Maestro",测试就从"操作完了"升级成"结果对了",失败时截图自动存档。
让选择器更稳
页面上有多个"Search"时,改用正则或包含匹配:- tapOn: {textContains: "Search"}。元素名会随文案微调变化,用模糊匹配加索引比写死全文更抗造。这一步的意义:回归测试最怕文案一改全线红。
进阶玩法
子流程复用(多端共用公共步骤)。适用场景:登录逻辑在 Android 和 iOS 上各写一遍太浪费。把登录、断言首页抽成login.yaml,主流程用- runFlow: login.yaml引用。关键坑:子流程里写的命令,异常会直接归到主流程对应行,报错堆栈按主流程排,定位时别只盯子文件。
appState 条件分支(跳过已登录用户)。适用场景:回归时部分设备保留了上次登录态,从头跑反而失败。加一行:
- appState: {isLoggedOut: true} then: - runFlow: login.yaml它做什么:先探测登录状态,未登录才走登录子流程。关键坑:appState的判定也依赖元素可见性,App 名或图标改了,判定会失灵,记得同步更新选择器。
智能等待调参(处理慢加载界面)。适用场景:首页图片懒加载,断言总差几秒才过。默认每条命令等待约 10 秒,不够就在 flow 头部加defaultExpire: 20000全局调大,或用waitForAnimationEnd明确等动画结束。关键坑:默认值是每条命令独立的,别拿一条命令的超时去心算整个流程的预算。
避坑速查
| 现象 | 原因 | 解法 |
|---|---|---|
| 安装脚本报错 | Java 版本低于 17 | 安装 JDK 17+,java -version确认 |
| Web 流程报 Element not found | fixture 服务器没启动 | 先跑e2e/ensure_fixtures再测 |
| 提示找不到设备 | 没开模拟器或真机未连 | 启动 AVD/模拟器,或接真机开 USB 调试 |
| 元素匹配多个 | 文案重复 | 用index或textContains精确定位 |
适合每天要回归验证移动 App 或 Web 应用的开发、测试同学。下一步:挑一条真实流程——登录或搜索——写成 YAML,连上设备跑绿它,再逐步加断言扩成回归集。
【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考