MCPcopy
hub / github.com/web-infra-dev/midscene

github.com/web-infra-dev/midscene @v1.10.1 sqlite

repository ↗ · DeepWiki ↗ · release v1.10.1 ↗
5,366 symbols 16,293 edges 1,179 files 305 documented · 6%
README

Midscene.js

Midscene.js

English | 简体中文

官网: https://midscenejs.com/

web-infra-dev%2Fmidscene | Trendshift

开源、视觉驱动的 UI 测试。用自然语言编写测试用例,自动化任意平台。

npm version hugging face model downloads License discord twitter Ask DeepWiki.com

📣 Midscene Skills 已上线

使用 Midscene Skills 搭配 OpenClaw 控制任意平台

案例

💡 为什么选择 Midscene

大多数 UI 自动化都依赖页面结构,包括读取 DOM 或无障碍树的 AI 工具。页面结构既脆弱又不完整:选择器一重构就失效;缺少语义化标注的元素,如纯图标按钮、自定义控件和 <canvas>,对它们是“看不见”的;原生应用与跨域 iframe 也难以触达;页面结构还无法判断界面实际看起来是否正确。

Midscene 仅凭截图工作。你只需用自然语言描述每一步:

  • 更低的维护成本:UI 变化时,无需再追着改选择器。
  • 触达每个元素与界面:只要人眼能看到,Midscene 就能定位。即使元素没有语义化标注,或位于 <canvas>、原生应用、跨域 iframe 上,也可以定位。
  • 校验用户真正看到的效果:验证颜色、高亮、布局与渲染状态,而不只是判断 DOM 节点是否存在。
  • 两种测试方式:接入你的 Playwright / Vitest 测试,或让 AI Agent 通过 Skills 自主测试。

Midscene 首先为 UI 测试而生,但同一套视觉驱动引擎也能胜任任意 UI 自动化任务。

💡 能自动化什么

只要能截图,Midscene 就能工作。Web 浏览器、Android、iOS、HarmonyOS、桌面应用,以及任意自定义界面,全部通过同一套 API。

你可以用 JavaScript SDK 或 YAML 编写自动化,也可以通过 Skills 交给 AI Agent。所有方法都可以在 API 参考 中查阅,包括 aiActaiQueryaiAssert

🚀 开始使用

✨ 多模态模型驱动

Midscene 在 UI 操作上完全采用纯视觉路线:元素定位仅基于截图。它支持 Qwen3.xDoubao-Seed-2.1GLM-4.6Vgemini-3.5-flashUI-TARS 等具备极强 UI 定位能力的多模态模型,也包括可自托管的开源选项。在数据提取与页面理解场景中,你仍可按需选择携带 DOM。

阅读更多:模型策略

📄 资源

🤝 社区

🌟 Awesome Midscene

扩展 Midscene.js 能力的社区项目:

📝 致谢

感谢以下项目:

  • RsbuildRslib 提供构建工具支持。
  • UI-TARS 提供开源 Agent 模型 UI-TARS。
  • Qwen-VL 提供开源多模态模型 Qwen-VL。
  • scrcpyyume-chan 让我们能在浏览器中控制 Android 设备。
  • appium-adb 提供 adb 的 JavaScript 桥接。
  • appium-webdriveragent 提供 JavaScript 操作 XCTest 能力。
  • YADB 提供 yadb 工具以提升文本输入性能。
  • libnut-core 提供跨平台原生键鼠控制。
  • Puppeteer 提供浏览器自动化与控制能力。
  • Playwright 提供浏览器自动化、控制与测试能力。

📖 引用

如果你在研究或项目中使用了 Midscene.js,请引用:

@software{Midscene.js,
  author = {Xiao Zhou, Tao Yu, YiBing Lin},
  title = {Midscene.js: Your AI Operator for Web, Android, iOS, Automation & Testing.},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/web-infra-dev/midscene}
}

✨ Star 历史

Star History Chart

📝 许可协议

Midscene.js 采用 MIT 许可证


如果这个项目对你有帮助或启发,欢迎点个 Star

Extension points exported contracts — how you extend this code

BaseDevice (Interface)
(no doc) [9 implementers]
packages/shared/src/agent-tools/types.ts
WindowController (Interface)
(no doc) [9 implementers]
packages/computer-playground/src/window-control.ts
RDPBackendClient (Interface)
(no doc) [8 implementers]
packages/computer/src/rdp/protocol.ts
StorageProvider (Interface)
(no doc) [10 implementers]
packages/visualizer/src/types.ts
MjpegStreamHandle (Interface)
(no doc) [4 implementers]
packages/core/src/device/index.ts
PlaygroundSidecar (Interface)
(no doc) [3 implementers]
packages/playground/src/platform.ts
ResolvedScrcpyOptions (Interface)
* Required options after applying defaults
packages/android/src/scrcpy-manager.ts
ScrcpyVideoSocketLike (Interface)
(no doc) [1 implementers]
packages/playground-app/src/scrcpy-stream.ts

Core symbols most depended-on inside this repo

error
called by 304
apps/chrome-extension/src/extension/recorder/logger.ts
aiAct
called by 292
packages/core/src/agent/agent.ts
sleep
called by 222
packages/core/src/utils.ts
on
called by 185
packages/playground-app/src/scrcpy-stream.ts
create
called by 162
packages/core/src/screenshot-item.ts
warn
called by 159
apps/chrome-extension/src/extension/recorder/logger.ts
connect
called by 152
packages/computer/src/rdp/protocol.ts
destroy
called by 150
packages/shared/src/agent-tools/types.ts

Shape

Function 2,962
Method 1,417
Interface 691
Class 290
Enum 6

Languages

TypeScript100%

Modules by API surface

packages/playground/src/server.ts111 symbols
apps/studio/scripts/package-electron.mjs90 symbols
packages/core/src/agent/agent.ts69 symbols
packages/android/src/device.ts66 symbols
packages/core/src/device/index.ts65 symbols
packages/web-integration/src/puppeteer/base-page.ts63 symbols
packages/core/src/types.ts60 symbols
packages/web-integration/src/chrome-extension/page.ts56 symbols
packages/computer/src/device.ts51 symbols
packages/ios/src/device.ts48 symbols
apps/studio/src/renderer/recorder/StudioRecorderProvider.tsx48 symbols
packages/visualizer/src/types.ts46 symbols

Dependencies from manifests, versioned

@ant-design/icons5.3.1 · 1×
@biomejs/biome1.9.4 · 1×
@changesets/cli2.24.1 · 1×
@commitlint/cli19.8.0 · 1×
@commitlint/config-conventional19.8.0 · 1×
@computer-use/libnut4.2.0 · 1×
@electron/notarize3.1.1 · 1×
@electron/packager19.1.0 · 1×
@esm2cjs/execa6.1.1-cjs.1 · 1×
@inquirer/prompts7.8.6 · 1×
@jsdevtools/version-bump-prompt6.1.0 · 1×
@midscene/androidworkspace:* · 1×

For agents

$ claude mcp add midscene \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact