隆重推荐(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/当前目录中的文件夹中。

安装示例应用程序,然后使用命令运行:

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

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

c 复制代码
appId: org.wikipedia
tags:
  - android
  - passing
---
- launchApp

我自己写了一个简单的

c 复制代码
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看看,是否已被提交

相关推荐
花花鱼7 小时前
android studio 设置让开发更加的方便,比如可以查看变量的类型,参数的名称等等
android·ide·android studio
alexhilton9 小时前
为什么你的App总是忘记所有事情
android·kotlin·android jetpack
AirDroid_cn12 小时前
OPPO手机怎样被其他手机远程控制?两台OPPO手机如何相互远程控制?
android·windows·ios·智能手机·iphone·远程工作·远程控制
尊治12 小时前
手机电工仿真软件更新了
android
海涛高软13 小时前
Qt的ui文件的编译和使用
ui
杂雾无尘14 小时前
开发者必看,全面解析应用更新策略,让用户无法拒绝你的应用更新!
ios·xcode·swift
xiangzhihong815 小时前
使用Universal Links与Android App Links实现网页无缝跳转至应用
android·ios
车载应用猿15 小时前
基于Android14的CarService 启动流程分析
android
没有了遇见16 小时前
Android 渐变色实现总结
android
Digitally17 小时前
如何将iPhone备份到Mac/MacBook
macos·ios·iphone