ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Maestro完整教程:如何5分钟上手跨平台UI自动化测试,从安装到第一条脚本

Maestro完整教程:如何5分钟上手跨平台UI自动化测试,从安装到第一条脚本 Maestro完整教程如何5分钟上手跨平台UI自动化测试从安装到第一条脚本【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro假设你接到一个任务给同一个App写一条冒烟测试要求Android和iOS都能跑内容是启动应用、完成登录、确认首页出现。过去你得用Espresso和XCTest各写一遍用Maestro只需要一份YAML脚本——它是一个基于YAML的跨平台UI自动化测试框架同一条流程可以直接跑在Android模拟器、iOS模拟器和浏览器上。下面我们把安装、语法、实战和排坑一次走完你能独立写出并跑通自己的第一条脚本。 快速认识Maestro它是什么最短脚本长什么样这一节帮你花半分钟建立整体认知看清最短可用脚本的长相。定位开源的端到端UI自动化测试框架脚本是YAML不是代码覆盖平台Android、iOS、WebFlutter、React Native等混合应用同样适用智能等待框架自动等待元素出现脚本里基本不用写sleep即写即跑脚本被解释执行改完直接运行无需编译下面是一条能直接运行的最小脚本完整到令人意外appId: com.android.contacts --- - launchApp - tapOn: Create new contact - inputText: John - tapOn: Save前两行声明目标应用的包名---之后就是逐步执行的命令。 五分钟上手Maestro安装与验证这一节结束时你的机器上会有一个可用的maestro命令。环境只有一个硬性要求Java 17或更高版本用java -version确认。满足后一条命令完成安装curl -fsSL https://get.maestro.mobile.dev | bash export PATH$PATH:$HOME/.maestro/bin maestro --version[!TIP] 验证方法maestro --version能打印出版本号如0.x.x即安装成功如果提示command not found多半是PATH没生效重新执行第二行export即可。安装完成后运行脚本的固定姿势是maestro test 你的flow.yaml退出码为0表示整条流程通过——后面接CI会用到这一点。 一条脚本的五个动作核心语法拆解这一节讲清楚你在90%脚本里会反复用到的五类命令看懂后就能读任何现成flow文件。# 启动应用 - launchApp # 元素交互与结果断言 - tapOn: Login - inputText: userexample.com - assertVisible: My orders # 条件分支仅当元素可见时执行 - runFlow: when: visible: 验证码 commands: - tapOn: 跳过验证启动应用launchApp放在每条脚本开头可加clearState: true清空应用状态保证每次从头开始元素交互tapOn按文本点击inputText向当前焦点输入框打字——不需要先定位输入框这是新手最容易忽略的省事之处结果断言assertVisible/assertNotVisible是验收标准没有断言的脚本只算操作不算测试条件分支弹窗、灰度、AB实验这类可能不出现的元素用when包一层出现了才处理动态数据测试邮箱、订单号这类数据用runScript生成后以${output.result}填入比如- inputText: ${output.result}避免写死值 端到端实战登录场景两条脚本这一节完整走通登录的正常流和失败流你能直接改造成自己App的冒烟用例。正常流验证能用正确账号密码登录成功appId: com.example.shop tags: [login, smoke] --- - launchApp: clearState: true # 清状态两次运行起点一致 - tapOn: 我的账户 - inputText: standard_user - inputText: secret_sauce - tapOn: Login - assertVisible: 我的订单 # 首页特征元素登录成功为什么这么写clearState消除上次登录还挂着的干扰断言不盯登录按钮本身而是盯只有登录成功才出现的页面元素才是有效验收。失败流验证被锁定账号会收到明确提示appId: com.example.shop --- - launchApp: clearState: true - tapOn: 我的账户 - inputText: locked_out_user - inputText: secret_sauce - tapOn: Login - assertVisible: 您的账户已被锁定 # 断言错误提示出现两条流程只有账号和最后一条断言不同——负向用例的价值就在于错误提示必须出现如果App静默失败这条脚本会替你抓住它。 避坑指南跑脚本时最常见的两类失败这一节给你两张排查卡片遇到报错先对号入座。问题一元素定位失败现象tapOn报element not found但人眼在界面上明明看得到原因文案带了动态数字或空格登录 (2)文本对不上或该元素只在部分机型/版本出现解法改成模糊匹配或改用更稳定的id定位非必现元素加optional: true容忍缺失问题二断言偶发失败现象同一条脚本时过时不过重跑就绿原因断言在页面跳转动画或数据加载完成前执行解法给断言显式加超时把默认等待拉长# 定位模糊匹配容忍文案差异 - tapOn: text: contains: 登录 # 断言显式给足加载时间 - assertVisible: text: 支付成功 timeout: 10000 边界与下一步哪里该用、之后往哪走这一节帮你判断Maestro适不适合你的场景并给出三条可落地的延伸路径。适合主流程冒烟测试、登录/引导/下单等核心路径回归、同一个用例在Android和iOS上的一致性验证——这些场景收益最直接。不适合高频的单模块功能验证用单元测试更划算、性能压测、依赖复杂数据前置的测试——它管的是界面行为不是数据工程。延伸方向按投入从小到大接入CI构建后跑maestro test退出码非0即让流水线失败冒烟测试变成每次提交的守门员扩写flow库仓库里的e2e/workspaces/有一批现成样例包括Wikipedia的多平台流程和Web用例照抄结构最快从源码构建需要改行为时看installLocally.sh本地编译整个框架建议今天就做一件事挑一个你手头的App按上面登录实战的结构写出第一条脚本跑起来——跑绿了后面的一切都是复制粘贴的事。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表