🧩 MCP生态

agent-browser与playwright-mcp对比:AI浏览器自动化选型核心差异解析

发布时间:2026-04-18 分类: MCP生态
摘要:为什么选 agent-browser 而不是 playwright-mcp直接上手的差异你写一个 AI Agent,要操作浏览器——比如填表、点按钮、抓数据。playwright-mcp 和 agent-browser 都能做,但体验完全不同。playwright-mcp 是把 Playwright 的能力“套壳”进 MCP 协议:它暴露的是底层浏览器操作(click, fill, wait...

封面

为什么选 agent-browser 而不是 playwright-mcp

直接上手的差异

你写一个 AI Agent,要操作浏览器——比如填表、点按钮、抓数据。playwright-mcpagent-browser 都能做,但体验完全不同。

playwright-mcp 是把 Playwright 的能力“套壳”进 MCP 协议:它暴露的是底层浏览器操作(click, fill, wait_for_selector),返回的 JSON 带大量元信息(如 DOM 树快照、事件监听器列表、样式计算结果)。这些对调试浏览器本身有用,但对 AI Agent 来说,90% 是噪音。

agent-browser 反过来:它不暴露浏览器细节,只暴露语义动作和结构化结果。比如你让 Agent “提交登录表单”,它返回:

{
  "success": true,
  "redirect_url": "https://app.example.com/dashboard",
  "extracted": {
    "username": "alice",
    "last_login": "2024-05-20T08:32:11Z"
  }
}

没有 CSS 选择器路径,没有 frame 层级,没有未渲染的 shadow DOM 节点。只有你真正需要的数据。

关键维度对比

特性playwright-mcpagent-browser
输出格式庞大 JSON,含 DOM 快照、样式、事件等精简语义化 JSON,只含动作结果与提取字段
元素定位手写 CSS/XPath,需反复 inspect 元素自然语言描述 + 自动匹配(如 “右上角头像图标”)
协议设计Playwright 命令直映射,MCP 封装层薄原生 MCP Action/Tool 定义,无冗余抽象
会话管理每次调用新建 BrowserContext,状态不保留支持跨请求会话上下文(cookies、localStorage、history)
性能启动 Chromium 实例约 1.2s,内存常驻 300MB+复用进程,冷启动 < 200ms,常驻内存 < 80MB
移动端/云支持需手动配置 viewport、userAgent、touch 事件内置 mobile preset,自动适配 viewport 和手势模拟
流式响应仅支持 polling,延迟高且易丢帧WebSocket 原生流式输出(如页面加载中实时吐文本块)

具体场景怎么体现

1. 构建客服 Agent

playwright-mcp 实现“查看用户订单历史”:

  • goto 订单页
  • wait_for_selector 等加载完成
  • query_selector_all 找所有 .order-item
  • 对每个 item inner_text() 提取内容
  • 手动解析日期、金额、状态字段
  • 最后拼成 JSON 返回

agent-browser

{
  "tool": "browser.extract",
  "input": {
    "url": "https://shop.example.com/orders",
    "schema": {
      "orders": [
        {
          "id": "text in .order-id",
          "date": "text in .order-date",
          "status": "text in .order-status"
        }
      ]
    }
  }
}

它自动处理等待、重试、字段提取、类型转换(如把 "May 20, 2024" 转成 ISO 时间)。

2. 电商比价工具

你需要在 5 个网站抓同款商品价格。playwright-mcp 要为每个站点写独立的 selector 逻辑,维护 5 套 XPath;agent-browser 只需统一 schema:

{
  "price": "number in [data-testid='price'] or .price or .current-price"
}

它内置 selector fallback 链和容错重试,失败时返回 {"price": null, "error": "timeout"},而不是抛出异常或卡死。

3. 调试真实发生什么

playwright-mcp 报错常见于:

  • TimeoutError: waiting for get_by_test_id("submit-btn") failed
  • Error: Element is not attached to the DOM

你得开 DevTools,切到 Elements 面板,手动验证 selector 是否还有效。

agent-browser 报错带上下文:

{
  "error": "element_not_found",
  "hint": "Button '提交' not visible; found 2 elements matching 'submit' but both are disabled",
  "screenshot": "data:image/png;base64,..."
}

截图直接嵌在响应里,不用切窗口。

怎么开始

  1. 安装:

    pip install agent-browser
  2. 启动服务:

    agent-browser --port 8000
  3. 发送一个请求(curl 或 Python requests):

    curl -X POST http://localhost:8000/v1/tools/browser.navigate \
      -H "Content-Type: application/json" \
      -d '{"url": "https://example.com", "wait_for": "text in h1"}'
  4. 查看文档:agent-browser.readthedocs.io —— 重点看 browser.extractbrowser.interact 的 schema 定义。

不需要改现有 MCP client,只要把 tool call 的 nameinputagent-browser 规范发过去就行。

返回首页