尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Maestro 跨平台 UI 自动化测试实战:一个 YAML 流程跑通 Android、iOS 与 Web

Maestro 跨平台 UI 自动化测试实战:一个 YAML 流程跑通 Android、iOS 与 Web Maestro 跨平台 UI 自动化测试实战一个 YAML 流程跑通 Android、iOS 与 Web【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro你在同一个 App 上各写了一份 Android、iOS 和 Web 的测试脚本三套语法、三处维护UI 改一次就得跟着改三遍。Maestro 就是来解决这件事的用 YAML 测试流程描述步骤同一份文件能在 Android、iOS 和 Web 上执行并且内置智能等待不用手写 sleep。一条命令装好 Maestro版本号打印出来就算通过先确认环境里有 Java 17 或更高java -version。macOS、Linux、WindowsWSL都能用其余无需任何配置。curl -fsSL https://get.maestro.mobile.dev | bash export PATH$PATH:$HOME/.maestro/bin maestro --version安装脚本会下载二进制并放到~/.maestro第二行把可执行目录挂进 PATH第三行确认。能打印出版本号环境就就绪了——Maestro 安装到此结束后面不再需要装驱动或 SDK。第一个登录用例完整 YAML 先行再逐行拆解先给能直接跑的最小登录流程用 saucedemo 的公开账号演示appId: com.example.ecommerce tags: - login - positive --- - launchApp: clearState: true - tapOn: Username - inputText: standard_user - tapOn: Password - inputText: secret_sauce - tapOn: Login - assertVisible: Products - assertVisible: Sauce Labs Backpack四个核心命令的作用命令作用launchApp启动应用clearState: true先清空应用状态保证每次从干净环境起步tapOn点击界面里文本命中的元素inputText向当前聚焦的输入框写入文本assertVisible断言元素可见找不到就判定这一步失败写定位时用元素上看得见的文本不是 XPath 那类精确选择器。每执行一步Maestro 会先等目标元素就绪再继续所以这里没有一个sleep。想覆盖失败路径把账号换成锁定账号、把末尾断言换成错误提示即可——结构不变只是换了数据。断言偶发红怎么治智能等待、retry 与 timeout 的分工多数变红来自页面没加载完内置的智能等待已经替你处理了大部分。剩下两种稳定写法- retry: maxRetries: 3 commands: - assertVisible: Payment successretry把里面那段断言最多再执行 3 次专治偶发红。若某个元素天生加载得慢给它单独放宽等待上限- extendedWaitUntil: visible: Payment success timeout: 10000timeout把等待上限拉到 10 秒。这两招只是延后失败不是消除问题——超时后依然红就该回头检查用例本身别再往等待上加码。定位失败时先问自己三个问题Element not found 多数时候不是元素不存在而是定位条件给得太死。按排查成本从低到高走文案是固定的吗界面文字里带订单号、时间这类动态内容时改用正则只匹配稳定片段例如tapOn: 订单.*号只要命中就通过不用逐字写死。同名元素是不是只有一个页面上有两个提交时用childOf把范围收窄到指定父容器内只挑对的那个tapOn: { text: 提交, childOf: { text: 结算 } }。前置条件成立吗屏幕根本没滚到目标位置或应用状态被上一次运行污染了。给launchApp加clearState: true用干净环境重跑一遍再判断。三个问题里多数定位失败到第二步就能找到原因成本最低的放最前面。同一份用例移动端和 Web 端各跑一遍移动端在文件头声明appId指向应用包名Web 端不写appId改用url指向页面地址后面的点元素、输入、断言这些步骤与移动端完全同构一份逻辑两端复用。仓库里的 e2e/workspaces/web/simple.yaml 是可直接跑的真实 Web 用例开头是url: https://www.saucedemo.com/登录 saucedemo 公开站点后连断多个可见商品末尾还演示了正则断言assertVisible: .*sleek.*和移动端写法一一对应。落地清单把它变成一套能交给 CI 的用例集加一条负向用例输入锁定账号断言错误提示确实出现。把同一份流程改写成 Web 版把appId换成url确认跑绿。给仍偶发红的那条断言套上retry或extendedWaitUntil连跑几遍确认稳定。三件事做完你手里就有一份能直接接进 CI 的最小用例集同一份 YAML 在 Android、iOS、Web 三端轮流跑绿。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表