Midscene 视觉驱动测试实战:与 Playwright 的对比和落地成本
2026/9/11 17:04:50 网站建设 项目流程

Midscene 视觉驱动测试实战:与 Playwright 的对比和落地成本

【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene

一个一百二十条用例的电商回归套件,半天内通过率从 98% 掉到 54%。团队排查两天发现原因:一次前端重构改了一组类名,套件里几十个 DOM 选择器全部失明。这类失败的卡点在元素定位——正是视觉驱动测试要解的核心问题。本文拆解 Midscene 仅凭截图定位元素并执行断言的机制,并与选择器驱动方案对比、核算落地成本。

🧭 它到底怎么工作的:无选择器元素定位的完整调用链

核心变化一句话:元素坐标不再由人写死,而由模型算出来,这就是无选择器元素定位的原理。一条指令的调用链分三段。

输入与处理:截图进模型,坐标出来

你用一句话描述步骤,例如"在搜索框输入关键词并回车"。Midscene 截取当前页面,连同指令发给配置的多模态模型(Qwen、Doubao、DeepSeek 等),模型返回目标元素的包围盒坐标和一组操作。复合指令由aiAct以"执行 → 观察 → 重规划"循环推进,默认上限 30 轮;某一步失败时会重新观察截图并修正剩余步骤。

输出:Playwright 执行坐标,报告记录过程

坐标交给底层 Playwright 完成真实点击与输入;交互后默认等待页面网络空闲(waitForNetworkIdleTimeout,默认 2000ms),避免操作半加载的 DOM。每一步的截图、耗时与 token 消耗写入单文件 HTML 报告,失败时不用翻日志,直接看第几步的截图。

仓库自带的 Playground 可以快速验证这条链路:启动本地服务,浏览器打开目标页面,在左侧面板输入"Click the search bar"这类指令并点 Run,即可看到页面逐步响应并生成报告。

缓存:重复执行不再调模型

同一指令重复执行时,Midscene 会把 AI 规划结果和元素 XPath(仅 Web)写入./midscene_run/cache,下次命中即跳过模型;失效时透明回退到模型并清掉旧缓存。官方文档给的样例:单条指令耗时从 51 秒降到 28 秒。注意查询类断言(aiQuery/aiAssert)永不缓存,详见 caching.mdx。

⚖️ 横向对比:把 Playwright AI 集成放进同一张表看

维度纯 PlaywrightSeleniumAppium(移动原生)Midscene + Playwright
元素定位依据DOM 选择器DOM 选择器无障碍树截图 + 自然语言
纯图标按钮 / canvas 元素需自写逻辑需自写逻辑部分可以可定位
覆盖平台WebWebAndroid / iOSWeb + Android / iOS / HarmonyOS / 桌面
单次执行模型调用成本000按次计费(见下方数据来源)
失败诊断产物文本日志文本日志文本日志 + 截图步骤级截图 HTML 报告

成本数据来源:项目官方 AppControlBench 报告(60 个 iOS 任务,Midscene 1.12.0,2026-08 执行),Doubao Seed 2.1 Turbo 全程共 $1.56、单任务均值 52 秒,Pass@1 为 96.67%。

怎么选:如果页面结构稳定、只追求回归速度,纯 Playwright 选择器足够,不必引入模型依赖;如果 UI 动态内容多、要操作 canvas 或纯图标按钮,Playwright AI 集成的价值才会体现;如果还要覆盖 Android / iOS 原生应用,Midscene 用同一套 API 可达,但要预留移动端桥接(scrcpy / WDA)的环境配置时间。

📐 落地成本:从自然语言用例到 CI 流水线

先说要付出的:

  1. 学习曲线:需要重新建立aiAct(操作)、aiQuery(取数)、aiAssert(断言)三类指令的心智模型,并配置模型服务的 API Key。
  2. CI 改动量:加一个@midscene/web依赖、一个 fixture 扩展、一个 reporter;超时要放宽,官方示例直接设到 90 秒,因为一条指令的模型往返天然慢于选择器。
  3. 存量资产兼容:不必整体重写,稳定选择器断言原样保留,只把 flaky 步骤换成自然语言用例步骤,官方 integrate-with-playwright.mdx 也是这个策略。
  4. 运行成本:每次执行产生模型调用,需计入 CI 预算——AppControlBench 样本里 60 个任务总花费 $1.56。

再说要省的。以下数字为内部压测数据,基于 3 人团队 / 40 个用例的回归集,且被测 UI 变更频繁:

项目Before(选择器驱动)After(Midscene 视觉驱动)
单用例编写时间约 4 小时约 40 分钟
单失败调试时间1–2 小时,靠手工重放截图约 20 分钟,报告自带步骤级截图
40 用例回归周期约 1 小时 + 人工分拣 flaky约 30 分钟(缓存命中时)

最小可行落地路径:

  1. 配好模型 Key,跑通官方 Playwright 示例
  2. 挑一个 flaky 用例改写关键步骤为 aiAct
  3. 开启只读缓存,CI 里连跑三轮
  4. 接入报告 reporter,归档步骤截图
  5. 观察一周,再决定是否扩大范围

📈 演进路线:它现在能做什么,还做不到什么

它现在能做什么

Web、Android、iOS、HarmonyOS、桌面端的纯视觉定位;Playwright / Puppeteer 集成与独立 YAML 脚本执行;缓存加速;步骤级报告;Bridge 模式让本地脚本附着到桌面 Chrome,复用它的 cookies 与登录态,适合需要登录环境的测试。

它还做不到什么

  • XPath 元素缓存仅限 Web 场景,移动端每次仍依赖模型定位。
  • 新版 Test Runner(@midscene/test)与 Gherkin BDD 均为 Beta,协议未稳定,存在 breaking change 的可能。
  • MCP server 包已下线,最后一个支持版本是 1.9.8,存量 MCP 集成需锁定版本或改用 Skills / CLI。
  • 执行速度受模型推理限制:AppControlBench 样本中单任务均值 52–86 秒,"秒级回归"场景不适用。

社区在往哪走

按最近三个 release 的 changelog 可验证:v1.12 支持 DeepSeek V4 视觉模型、发布新版 Test Runner(Beta)、报告增加耗时汇总;v1.11 修复 HarmonyOS 启动目标解析、移动端清空输入等稳定性问题;v1.10 新增 Gherkin BDD 脚本并正式下线 MCP。另外官方 changelog 已声明 Studio 桌面端的"录制 → 脚本 → 回放"工作流将在后续版本陆续开放。

如果你的测试栈已有 Playwright 且 UI 变更频繁,值得花一个下午按 fixture + aiAct 跑通一次视觉驱动测试 POC;如果页面以静态为主且选择器约定成熟,先观望新版 Test Runner 的 1–2 个版本再说。

【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询