当前位置: 首页 > backend >正文

隆重推荐(Android 和 iOS)UI 自动化工具—Maestro


前言

当前移动 UI 自动化工具的实际效能与预期存在显著差距,团队推行 UI 测试的核心诉求,是在保障现有功能稳定性的前提下加速迭代进程 —— 但实际落地中,测试用例的高失败率、基础设施的运维负担、测试脚本的脆弱性,以及自动化框架的技术复杂性,共同形成了效率瓶颈,导致开发节奏不升反降。


一、为什么选择 Maestro?

Maestro 借鉴了 Appium、Espresso、UIAutomator 和 XCTest 等前辈工具的经验教训,在摒弃复杂性的同时保留核心优势,并实现了多项根本性创新。
以下是我认为选择 Maestro 作为移动 UI 测试的核心原因:

  1. 原生抗干扰能力

针对移动应用与设备的天然不稳定性,Maestro 底层内置动态容错机制 —— 自动适配 UI 元素位置偏移、点击失败等异常场景,无需人工预设兜底逻辑。

  1. 智能延迟管理

彻底告别测试脚本中频繁的 sleep() 硬编码。Maestro 基于网络加载、动画渲染等场景特征,自动执行动态等待(且严格遵循超时控制),兼顾效率与稳定性。

  1. 极速迭代体验

采用解释型执行机制,测试脚本无需编译即可运行。搭配实时文件监控功能,代码修改后可立即触发重跑,让测试迭代效率提升数倍。

  1. 声明式语法设计

仅需一个简洁的 YAML 文件即可完成测试逻辑定义,语法兼具可读性与强大表现力,大幅降低跨团队协作成本。

  1. 极简部署架构

作为单一二进制文件,Maestro 可在任意环境中即装即用,彻底摆脱传统工具复杂的依赖配置与环境搭建流程。

  1. 全平台无缝兼容

同时支持 iOS 与 Android 系统,并完美适配 React Native、Flutter、WebView 及纯原生应用,一套脚本即可覆盖全场景测试需求。

二、使用步骤

1.安装(Windows)

1.下载最新的 Maestro 版本

https://github.com/mobile-dev-inc/maestro/releases/latest/download/maestro.zip

2.解压 Maestro zip 文件
将上一步下载的 zip 文件解压到任意位置。例如:

C:\Users\maestro

3.更新 PATH 环境变量
将包含该maestro\bin文件夹添加到环境变量。

4.连接到设备使用
maestro test将自动检测并使用任何本地模拟器或 USB 连接的物理设备。
Maestro使用开源项目dabd绕过 ADB 服务器,直接与设备上的 ADB 守护进程端口对话,从而实现简化的架构以及与 Android 模拟器更稳健的通信。
dadb 的连接逻辑,如下图
在这里插入图片描述

macOS和Linux安装请参考

https://docs.maestro.dev/getting-started/installing-maestro

2.运行示例

使用 download-samples 命令下载示例:

maestro download-samples

这会将内置示例 Flows 和应用程序下载到samples/当前目录中的文件夹中。
安装示例应用程序,然后使用命令运行:

安卓
cd ./samples
adb install sample.apk
maestro test android-flow.yaml
iOS
cd ./samples
unzip sample.zip
xcrun simctl install Booted Wikipedia.app
maestro test ios-flow.yaml

官方给的案例是wiki,所以里面执行步骤也就只到打开app那一步骤

appId: org.wikipedia
tags:- android- passing
---
- launchApp

我自己写了一个简单的

appId: com.yihu.doctor
---
- launchApp
- tapOn: "手机号登录"
- tapOn: "其他手机号登录"
- tapOn: "密码登录"
- tapOn: "请输入手机号"

看看执行结果日志:
在这里插入图片描述
好奇用的是什么AI,去查看了源码
在这里插入图片描述
在这里插入图片描述


三、Maestro Studio (重点)

目前已有许多在移动设备上的无代码自动化,都面临着相同的关键问题:

当发生变化时需要重新录制整个测试,难以与功能变化保持同步,难以编辑/调整记录的测试,很难将流程作为 CI 的一部分运行

Maestro Studio就是可维护的无代码移动 UI 自动化解决方案。

轻松编辑测试

Maestro Studio 可以在本地移动设备(iOS 模拟器 / Android 仿真器 / 真机)上运行。这让您可以轻松地与设备交互以进行调试或设置测试用例。
在这里插入图片描述
Maestro Studio 还可以显示与给定元素交互的方式列表。右键单击设备屏幕即可查看可复制到 Flow 的示例代码片段列表。

四、价格

在这里插入图片描述

总结

优点:

极简语法与低学习成本 Maestro 采用声明式 YAML
语法定义测试逻辑,无需编写复杂代码,测试用例的可读性和维护性显著提升。即使是非技术人员也能快速上手,降低了跨团队协作的沟通成本。

缺点(我遇到的):
1、真实设备兼容性比较差,比如我的手机Redmi K60,就无法调用起app
2、在处理 React Native 与原生模块的交互时,可能出现元素识别延迟或出错问题
3、在执行测试用例时,偶尔会出现崩溃的情况 IndexOutOfBoundsException
4、每次在Android 真机运行测试时,dev.mobile.maestro.test 的软件包都会被安装,测试完成后会被卸载。

如果你在使用过程中还发现其他问题,先去https://github.com/mobile-dev-inc/Maestro/issues看看,是否已被提交

http://www.xdnf.cn/news/6385.html

相关文章:

  • 浏览器宝塔访问不了给的面板地址
  • CSS图片垂直居中问题解决方案
  • 【数据结构入门训练DAY-35】棋盘问题
  • 本地文件操作 MCP (多通道处理) 使用案例
  • 使用 TypeScript + dhtmlx-gantt 在 Next.js 中实现
  • docker(四)使用篇一:docker 镜像仓库
  • 全球宠物经济新周期下的亚马逊跨境采购策略革新——宠物用品赛道成本优化三维路径
  • SQL练习(3/81)
  • 【Python】【面试凉经】Fastapi为什么Fast
  • uniapp,小程序中实现文本“展开/收起“功能的最佳实践
  • 5G + 区块链:技术巨浪下的新型数字生态!
  • 【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-踩坑点:国民健康保险】
  • Cloudflare防火墙拦截谷歌爬虫|导致收录失败怎么解决?
  • 国产化中间件 替换 nginx
  • MySQL索引优化面试高频考点解析(附实战场景)
  • 16.2 VDMA视频转发实验之模拟源
  • 【爬虫】DrissionPage-3
  • Ubuntu离线安装Minio
  • 鸿蒙OSUniApp 实现的地图定位与导航功能#三方框架 #Uniapp
  • websocket简介与基本使用
  • Protobuf3协议关键字详解与应用实例
  • mybatis-plus配置逻辑删除
  • 以项目的方式学QT开发(一)
  • upload-labs靶场通关详解:第6-9关
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- MCP内幕解析
  • css画图形
  • 海康立体相机3DMVS软件使用不同工作模式介绍
  • vue3项目中使用CanvasEditor开箱即用(组件的形式,组件封装好了)
  • AI数字人融合VR全景:从技术突破到可信场景落地
  • Hive PredicatePushDown 谓词下推规则的计算逻辑