Midscene.js 视觉自动化测试:一招告别选择器维护,四步解锁跨平台 UI 自动化
Midscene.js 视觉自动化测试一招告别选择器维护四步解锁跨平台 UI 自动化【免费下载链接】midsceneAI-powered, vision-driven UI automation for every platform.项目地址: https://gitcode.com/GitHub_Trending/mid/midscene前端一重构测试脚本里的 CSS 选择器就集体失效面对原生 App更是连 DOM 都摸不到。Midscene.js 正是为这类困境而生的视觉自动化测试工具——它绕开选择器直接基于屏幕截图让 AI 读懂自然语言指令并操作界面。换句话说你像指挥人类测试员一样说话它负责看见与执行。为什么选择器驱动测试总在重构后崩盘先讲一个几乎人人都踩过的场景产品改版按钮换了样式、层级调整、文案微调你的测试脚本开始大面积标红。原因很直白——传统工具靠 CSS 选择器、XPath 或可访问性树定位元素这些坐标与页面实现细节强耦合页面一变定位即失效。更棘手的是三类摸不到的目标没有语义标记的元素比如 canvas 自绘控件原生应用与跨域 iframe根本没有可注入的 DOM以及界面看起来对不对这类视觉问题DOM 永远答不上来。选择器本质是在猜实现而人类测试员靠的是眼睛。Midscene.js 的思路只有一句话把 AI 训练成测试员的眼睛。视觉驱动与选择器驱动一张对比表看清差异对比维度传统选择器方案Midscene.js 视觉方案定位依据CSS / XPath / 可访问性树屏幕截图 多模态模型重构后表现选择器失效脚本重写界面可见即可继续运行原生 App / iframe基本不可达看得见就能操作结果校验判断 DOM 节点是否存在验证用户真正看到的内容脚本表达一行行坐标命令一句句自然语言一句话概括传统方案问这个节点在不在视觉方案问用户看到了什么、能不能点它。测试的焦点从维护实现细节转移到了描述业务意图这正是它能抗住频繁迭代的底层原因。零基础第一条路Chrome 扩展三步试跑自然语言指令想先感受效果、不写一行代码走扩展这条路全程三分钟从 Chrome Web Store 安装 Midscene 扩展打开侧边栏面板它可能折叠在浏览器扩展图标下点设置齿轮粘贴模型配置OpenAI、豆包、GLM、Gemini 等主流多模态模型均可用在任意网页输入一句指令比如点击搜索框输入 Midscene.js 并回车看它自动执行。扩展会实时展示 AI 的定位、操作与断言全过程像 API Playground 一样即时反馈、随时调试。在扩展里验证过的指令写成脚本后行为完全一致因为两者共用同一套核心。完整教程见 apps/site/docs/en/quick-experience.mdx。可复用第二条路四步跑通一条自动化脚本需要可重复执行的自动化就走 JavaScript SDK 路线四步收工装依赖、配模型环境变量、写脚本、运行看报告。核心代码只有几行import { chromium } from playwright; import { PlaywrightAgent } from midscene/web/playwright; const page await chromium.launch().then(b b.newPage()); await page.goto(https://www.ebay.com); const agent new PlaywrightAgent(page); await agent.aiAct(type Headphones in the search box, then hit Enter); const items await agent.aiQuery({ title: string, price: number }[], the headphone products in the list); await agent.aiAssert(There is a category filter on the left side);aiAct负责操作、aiQuery提取结构化数据、aiAssert做断言三个方法就覆盖了绝大多数测试场景。官方从零起步示例在 apps/site/docs/en/quick-start.mdx。按平台拆解Web、移动端、桌面各自怎么用Web 端既支持 Playwright、Puppeteer 驱动也能通过桥接模式直接控制本地 Chrome——适合无缝接入现有测试框架一条连接命令即可接管当前标签页。Android 与 iOS通过 ADB 或 WebDriverAgent 连接真机和模拟器无需 root、无需越狱任何应用都能直接操作。比如打开设置查看当前系统版本号这类操作一句指令完成还能断言结果。桌面应用Windows、macOS、Linux 三端覆盖原生程序与 Electron 应用均可操控HarmonyOS 设备同样在支持列表内。一张表看懂项目架构与模块源码位置能力模块路径说明视觉 AI 核心引擎packages/core/Agent、报告生成、YAML 执行等基础能力Web 集成packages/web-integration/Playwright / Puppeteer / 桥接模式Android 支持packages/android/ADB、scrcpy 设备控制iOS 支持packages/ios/WebDriverAgent、模拟器支持桌面自动化packages/computer/三平台桌面控制可视化客户端apps/studio/桌面端图形化操作台想深挖某个平台的实现直接钻进对应目录即可模块边界清晰按图索骥很轻松。上线前的避坑清单配置、超时与报告解读几个真实项目里容易踩的坑提前记下能省不少事模型先行所有能力都依赖多模态模型先在简单页面上验证 API Key 与网络连通性再铺开用例超时留余量视觉识别天然比 DOM 定位慢aiWaitFor的等待时间按业务复杂度放宽别按直觉设短值报告当体检报告读每次运行都会生成可视化回放报告元素高亮、步骤耗时、失败原因一目了然调试时先看报告再改脚本。高频问题速答模型、成本、迁移一次说清Q已有选择器测试需要全部推倒重写吗A不必。Midscene 可以与传统断言并存先拿它覆盖易变、难定位的模块验证效果后再逐步迁移。QAI 调用成本会不会很高A可控。项目支持结果缓存并兼容豆包、GLM、GPT、Gemini 等多款模型重复截图可以交给更便宜的模型处理成本按需调配。Q只做 Web 测试引入它值不值A值。单是重构不再破坏测试这一条长期维护成本就省回来了何况后续要测移动端或桌面时能力已经就位。现在就开始给测试项目装上一双 AI 眼睛过去一年自动化测试的主线悄悄从写脚本找元素切换到了说人话驱动界面。Midscene.js 的价值不在于取代传统框架而在于把测试从实现细节中彻底解放出来——你只负责描述意图AI 负责看见与执行。✨ 自然语言即脚本选择器零维护 ✨ 截图级视觉校验验证真实所见 ✨ Web / Android / iOS / 桌面全覆盖 ✨ 可视化回放报告失败一眼定位装个扩展试两分钟或跑通一个四步的脚本比任何长篇介绍都更有说服力。选一条路现在就开始。【免费下载链接】midsceneAI-powered, vision-driven UI automation for every platform.项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Webcam实时交互:ml-projects中摄像头图像重建技术的原理与应用

Webcam实时交互:ml-projects中摄像头图像重建技术的原理与应用

Webcam实时交互:ml-projects中摄像头图像重建技术的原理与应用 【免费下载链接】ml-projects Implementation of web friendly ML models using TensorFlow.js. pix2pix, face segmentation, fast style transfer and many more ... 项目地址: https://gitcode.co…

2026/10/7 11:16:54 阅读更多 →
BlinkDB核心技术揭秘:近似查询算法如何突破性能瓶颈

BlinkDB核心技术揭秘:近似查询算法如何突破性能瓶颈

BlinkDB核心技术揭秘:近似查询算法如何突破性能瓶颈 【免费下载链接】blinkdb BlinkDB: Sub-Second Approximate Queries on Very Large Data. 项目地址: https://gitcode.com/gh_mirrors/bl/blinkdb 在处理海量数据时,传统数据库往往面临查询速度…

2026/10/1 20:26:16 阅读更多 →
Uhaha安全配置指南:TLS加密与Auth认证完整实现

Uhaha安全配置指南:TLS加密与Auth认证完整实现

Uhaha安全配置指南:TLS加密与Auth认证完整实现 【免费下载链接】uhaha High Availability Raft Framework for Go 项目地址: https://gitcode.com/gh_mirrors/uh/uhaha Uhaha是一个用于构建高可用Raft数据应用的框架,提供了强大的TLS加密和Auth认…

2026/10/7 5:51:41 阅读更多 →

最新新闻

OpenFeign 实战指南:从 RestTemplate 到声明式微服务调用

OpenFeign 实战指南:从 RestTemplate 到声明式微服务调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
树形DP入门:从状态定义到子树合并的完整指南

树形DP入门:从状态定义到子树合并的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
软件著作权申请材料模板与源程序格式避坑指南

软件著作权申请材料模板与源程序格式避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
FPGA数字时钟设计:SOPC软核方案快速开发与调试实战

FPGA数字时钟设计:SOPC软核方案快速开发与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
2S电池均衡系统设计:STM32F746ZG与MP2642GR-Z的软硬件实战

2S电池均衡系统设计:STM32F746ZG与MP2642GR-Z的软硬件实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
SpringBoot多模块项目实战:解耦、复用与云原生落地

SpringBoot多模块项目实战:解耦、复用与云原生落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →