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

隆重推荐(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.dtcms.com/a/191897.html

相关文章:

  • [数据结构]7. 堆-Heap
  • 单片机-STM32部分:17、数码管
  • Elasticsearch 分片机制高频面试题(含参考答案)
  • 乡村农家游乐小程序源码介绍
  • 【测试工具】selenium和playwright如何选择去构建自动化平台
  • duxapp 2025-01-13 更新 支持小程序配置文件
  • STC8H系列单片机STC8H_H头文件功能注释
  • 【hot100-动态规划-300.最长递增子序列】
  • Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】
  • Python多线程
  • 微信小程序医院挂号系统+SSM开发详解
  • conda更换清华源
  • 音频/AI/BLE/WIFI/玩具/商业等方向的论坛网站总结
  • 【愚公系列】《Manus极简入门》040-科技与组织升级顾问:“项目掌舵人”
  • Flutter——数据库Drift开发详细教程(六)
  • 讯联云库项目开发日志(二)AOP参数拦截
  • Profinet转Ethernet/IP网关模块通信协议适配配置
  • Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
  • 奇妙协同效应,EtherNet IP与PROFINET网关优化半导体生产线
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 注意“回车换行“的跨平台使用.
  • 【C++】Module CPP:模块化编程 Demo
  • uniapp,小程序中实现文本“展开/收起“功能的最佳实践
  • SIP协议栈--osip源码梳理
  • 安装win11硬盘分区MBR还是GPT_装win11系统分区及安装教程
  • 鸿蒙OSUniApp制作动态筛选功能的列表组件(鸿蒙系统适配版)#三方框架 #Uniapp
  • 答题pk小程序道具卡的获取与应用
  • RabbitMQ 消息模式实战:从简单队列到复杂路由(二)
  • 产线视觉检测设备技术方案:基于EFISH-SCB-RK3588/SAIL-RK3588的国产化替代赛扬N100/N150全场景技术解析
  • Android Development Roadmap
  • 数学复习笔记 10