ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

15 分钟从零跑通 Maestro 第一个跨平台 UI 测试:YAML 自动化实战入门

15 分钟从零跑通 Maestro 第一个跨平台 UI 测试:YAML 自动化实战入门 15 分钟从零跑通 Maestro 第一个跨平台 UI 测试YAML 自动化实战入门【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro你正在维护一个登录页。Android 有一套测试脚本iOS 一套Web 还有一套。页面改一个字段名你要改三处定位。Maestro 是一个开源的跨平台 UI 自动化测试框架用一个 YAML 文件即改即跑、无需编译的键值对文本文件描述测试步骤同一份流程可以在 Android、iOS 和 Web 上运行。框架内置智能等待元素出现前会自动等不用手写 sleep 覆盖加载延迟。按这篇指南操作15 分钟装好环境跑通你的第一个登录用例。第 1 步一条命令装好环境——maestro --version能打印版本号 ⚙️本步目的是装好 Maestro CLI 这一个二进制。做完后终端会打印一行版本号环境即就绪。# 先确认 Java 版本Maestro CLI 依赖 Java 17 及以上 java -version # 一行下载安装 Maestro CLImacOS、Linux、Windows WSL 都适用 curl -fsSL https://get.maestro.mobile.dev | bash export PATH$PATH:$HOME/.maestro/bin # 能看到版本号环境就算就绪 maestro --version如果没看到预期结果症状maestro: command not found原因当前 shell 还没加载 PATH 改动解法在当前终端执行source ~/.bashrczsh 用户换成 zshrc后重试症状Java 版本低于 17原因系统默认 JDK 太旧解法安装 JDK 17 及以上并指向 JAVA_HOME再跑java -version确认第 2 步写出第一个登录用例——一份 flow 全部 PASS 本步目标是跑通第一条流程。maestro test结束后终端逐行打印 PASS。先看仓库里真实的 Web 流程 e2e/workspaces/web/simple.yaml头部url声明目标页面---之后是打开页面、输入用户名密码、点登录、断言商品列表可见。逻辑和移动端登录用例完全一样只是入口参数不同。下面这段把它存成你自己的login_web.yamlurl: https://www.saucedemo.com/ # Web 用例用 url 声明入口页面 tags: - login - web --- - launchApp # 打开 url 声明的页面 - tapOn: Username # 点击文本为 Username 的元素 - inputText: standard_user - tapOn: Password - inputText: secret_sauce - tapOn: Login - assertVisible: Products # 断言点找不到则用例失败跑在移动端时把头部url换成appId被测应用的包名其余步骤不动。这就是跨平台的实际含义逻辑只写一遍元素在各端找得到就行。# 运行流程终端逐条打印步骤结果 maestro test login_web.yaml要覆盖异常路径时只换数据。把用户名换成锁定账号末尾断言错误提示# 负向分支锁定账号应被拒绝页面出现错误文案 - inputText: locked_out_user - inputText: secret_sauce - tapOn: Login - assertVisible: Epic sadface如果没看到预期结果症状Element not found: Username原因页面还没加载完或文本不完全匹配大小写、空格差异解法改用子串匹配- tapOn: { text: { contains: User } }或在该步骤前加一步extendedWaitUntil等待更久症状Web 端能跑换成移动端 appId 就挂原因移动端残留状态污染了测试环境解法给launchApp加clearState: true清空状态后复现一次横向对比维度Maestro传统组合Espresso / XCTest / Selenium或 Appium脚本形态一份 YAML解释执行即改即跑每个平台一种语言三套断言跨平台同一份流程跑 Android、iOS、Web三套框架三种写法等待元素内置智能等待自动等出现手写 sleep 或等待逻辑安装成本单二进制无驱动、无 SDK设备驱动、SDK、版本要对齐这个差异意味着测试脚本变成一份能直接读的配置。页面字段变更后你只改一处 YAML不用重新编译也不用同步三套代码。第 3 步稳住偶发断言——让 retry 替你等 本步目标是一条曾随机变红的断言连续跑 3 次保持绿。最常见的不稳定是断言执行时页面还没加载完。Maestro 默认等待能覆盖多数情况仍然偶发失败时加 retry。真实用法见 e2e/workspaces/simple_web_view/webview.yaml# 已加载的 runner 上点击可能被吞掉用 retry 重做而不是干等 - retry: maxRetries: 2 # 最多重试 2 次 commands: - tapOn: Open Login Page - assertNotVisible: Open Login Page - extendedWaitUntil: visible: Login timeout: 90000 # 最长等 90 秒 Login 元素出现注意retry 是等更久不是一直等。超时后仍失败就该回头检查用例本身而不是继续加码数字。元素文本里带单号、时间这类动态内容时别写全量匹配。用contains只匹配一段# 只匹配固定片段单号变化不会破坏用例 - tapOn: text: contains: 提交 # 两个提交按钮同名时把范围限定到父容器里 - tapOn: text: 提交 parent: text: 表单测试数据也别写死。inputRandomEmail、inputRandomNumber会在运行时现生成随机邮箱或数字直接写进流程即可# 每次运行填入新的随机邮箱避免多次运行数据撞车 - inputRandomEmail如果没看到预期结果症状CI 首次执行断言变红本地重跑又绿原因默认等待偏短元素出现前断言就已执行解法把该步骤包进retry并设置maxRetries同时调大内部extendedWaitUntil的timeout跑通自检逐项打勾。全部勾上你的第一条跨平台 UI 自动化测试用例才算真正可以交接。maestro --version能打印版本号环境就绪第一条 flow 用maestro test跑完所有步骤 PASS用例里至少有一条负向断言错误提示或 assertNotVisible偶发失败的断言已用 retry 包住连续 3 次运行保持绿同一份流程在移动端appId和 Web 端url各跑通过一次【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表