3.1 Playwright:微软官方的浏览器自动化
它是什么
microsoft/playwright-mcp,约 38483 star,TypeScript,npm 包 @playwright/mcp(实测版本 0.0.83)。微软官方维护。
在 2026 年 3 月的全球 MCP 搜索量榜单上,它排第一(约 82k/月),是第二名 Figma 的 1.1 倍。这不是营销排名,是真实采用度——几乎每个做“浏览器 agent”的人第一站都是它。
它最核心的设计:可访问性树
Playwright MCP 与截图路线有本质区别——它通过结构化可访问性树驱动浏览器,而不是靠截图识别。
| 维度 | 可访问性树 | 截图识别 |
|---|---|---|
| 速度 | 快 | 慢 |
| 稳定性 | 高(按 DOM 语义定位) | 低(视觉噪声即失败) |
| 读表单值 | 直接读 | 要 OCR |
| 定位元素 | 按 role / name | 按坐标或图像匹配 |
| 成本 | 低 | 高(多轮视觉推理) |
最后一行对实际使用影响最大:截图路线每一步都要模型“看图”,token 消耗和出错率都高一个量级。官方对它的概括是“faster and more reliable for agents”(对 agent 更快更可靠)。
安装与配置
npm install --global @playwright/mcp
- insert:
- id: playwright
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: playwright
transport: stdio
command: npx
args: ["-y", "@playwright/mcp@latest"]
cwd: !!js process.cwd()
用 npx -y 可以免全局安装,但每次启动会慢一点;长期使用建议全局装,并把 Playwright 的浏览器内核一并装好(npx playwright install)。在 Linux 上常需要 npx playwright install-deps 补系统依赖库,否则浏览器起不来。
常见变体:
| 需求 | args 调整 |
|---|---|
| 指定用 Chrome 而非默认 Chromium | 加 --browser chrome |
| 需要看到界面(调试时) | 加 --headed |
| 保存登录态复用 | 配 user-data-dir,持久化 profile |
典型用法
表单填写:
用 playwright 打开 https://example.com/signup,
填写测试账号(邮箱 test@example.com,密码 Test1234),
提交后确认跳转到欢迎页,截图保存。
数据抓取(需交互的):
用 playwright 登录后台,进入报表页,
把表格数据抓下来整理成 CSV。
注意:不要点任何删除或修改按钮。
UI 回归:
用 playwright 遍历 /settings 的四个 tab,
每个 tab 截图,检查控制台有无报错。
可访问性快照:
用 playwright 抓取首页的可访问性树,
列出所有可点击的导航项与它们的语义角色。
一条重要纪律
浏览器 agent 能点真按钮,所以它能造成真实后果。给任务时明确边界:
边界:只读操作。禁止点击任何提交、删除、支付类按钮。
需要提交时先停下来问我。
这一句能挡掉绝大多数事故。涉及真实账号、真实支付、真实删除,永远让人在回路里拍板。
与 dsh 自带浏览器能力的分工
DeepSeek Harness 自带浏览器工具,那还装不装?
| 场景 | 推荐 |
|---|---|
| 日常浏览、简单页面 | dsh 自带够用 |
| 需要稳定的多步自动化流程 | Playwright MCP |
| 需要跨工具复用同一套脚本 | Playwright MCP |
| 需要无头 / 指定浏览器内核 | Playwright MCP |
一句话:临时看一下页面用 dsh 自带,要写成可复用、可回归的自动化流程就上 Playwright。
排错
| 现象 | 原因 |
|---|---|
| 浏览器起不来 | 缺依赖库(Linux 需 npx playwright install-deps) |
| 点击没反应 | 元素在 iframe 或 shadow DOM 内 |
| 会话状态丢失 | 每次启动是新 profile,需持久化上下文 |
| 被反爬拦住 | 站点检测自动化,换 headed 模式或加延时 |
小结
- Playwright MCP 是微软官方浏览器自动化,2026 年搜索量第一。
- 核心优势是可访问性树驱动:更快、更稳、更便宜。
- 浏览器 agent 能造成真实后果,任务必须写清只读边界。
