资讯中心

5 分钟写出第一个移动 UI 自动化用例:Maestro 上手实录

📅 2026/10/3 0:12:26
5 分钟写出第一个移动 UI 自动化用例:Maestro 上手实录
5 分钟写出第一个移动 UI 自动化用例Maestro 上手实录【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro写移动 UI 自动化用例动画一多就 flakyAndroid、iOS 还得各写一套代码。Maestro 改用 YAML 描述 E2E 用例解释执行、等待内置五分钟跑通第一个用例。第一幕为什么写代码的方式让人头疼 跨平台应用的 UI 测试过去要写两套。Android 一套、iOS 一套语言不同、API 不同同一个登录流程实现两遍改一个 bug 要动两个文件。第二个痛点是 flaky。代码级框架不理解界面是否就绪用例只能靠 sleep 猜时机猜短了偶发失败猜长了 CI 越跑越慢。Maestro 的切入点是让用例变成文档而不是代码。YAML 人眼可读CLI 逐行解释执行不需要编译元素一时不在时内置的重试和智能等待会接管而不是直接判失败。第二幕五分钟跑通第一个移动 UI 自动化用例 ⚡前提只有一个Java 17 或更高。下面两条命令检查版本并安装 CLIjava -version curl -fsSL https://get.maestro.mobile.dev | bash装完后运行maestro --version打印出版本号即代表 CLI 已就位。然后是用例本身。这段流程在系统通讯录里新建一个联系人首行声明目标应用之后逐行就是操作步骤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后模拟器里应用被拉起、点击、输入、保存一气呵成终端逐条打印 PASS最终联系人列表里出现 John Snow全程没有一行 Java。仓库里这张渐变图是 CLI 录制模式使用的背景图位于 maestro-cli/src/main/resources/第三幕Maestro YAML 语法里最容易被忽略的三个写法 入门教程讲的都是tapOn和assertVisible真正在项目里好用的是下面三个。你可能不知道元素可以允许不存在。A/B 页面和引导页里有些按钮只出现一部分。给步骤加optional: true元素不在就跳过用例不判失败——仓库里 Wikipedia 的引导流程就是这么写的见 onboarding-android.yaml。你可能不知道一个流程能换个数据复用。runFlow调用子流程时可以带env变量同一个登录流程能跑不同账号。两段组合起来是这样# 跳过按钮可能不存在 - tapOn: text: Skip optional: true # 同一流程换数据 - runFlow: login.yaml env: USERNAME: ci_user PASSWORD: ci_pass改 env 的值就能切换测试数据不需要复制粘贴流程文件。你可能不知道还能做像素级截图对比。行内命令- assertScreenshot: expected.png会把当前界面和基准图逐像素比对并报告差异适合层级结构复杂、难以用断言覆盖的页面。这些命令在 Commands.kt 里都有对应的数据类定义想确认某个语法存在与否翻这个文件最快。第四幕真实项目里怎么落地 ️以登录流程进夜间回归为例关键有三步登录步骤抽成一个子流程 login.yaml 并把账号参数化主流程负责清状态启动应用、调用子流程最后用assertVisible守住落点页面。主流程只有九行负责整体编排appId: com.example.myapp tags: [regression] --- - launchApp: clearState: true - runFlow: login.yaml env: USERNAME: ci_user PASSWORD: ci_pass - assertVisible: Home跑一遍maestro test nightly.yaml日志按步骤顺序打印结果失败时停在那一步并给出信息不用翻长日志。两个容易踩的坑值得记住。一是别用 sleep 等界面稳定assertVisible本身会阻塞到元素出现动画场景有专门的waitForAnimationToEnd。二是 web 流程依赖本地静态服务服务没起就开跑launchApp不报错但用例会以元素找不到失败报错指向完全不是真因e2e 目录的 README 里专门记录了这个现象。值不值得现在就开始需要维护 Android 或 iOS 的 UI 回归测试时Maestro 值得优先尝试用例是纯文本文件代码评审友好非测试同学也能读懂。如果只是一次性验证或者团队已深度投入代码级框架、只需少量复杂自定义手势可以先跑官方样例感受一下再决定。下一步很简单执行maestro download-samples拉取样例应用和流程在模拟器上完整走一遍。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案