mcpField
P
playwright-mcp

playwright-mcp

github.com/darraghh1测试与质量97 次安装
代码仓库

关于 playwright-mcp

用于通过 Playwright MCP 服务浏览、检查并操作实时网页的技能,提供表单、多步骤流程和 UI 调试工作流。

主要功能

  1. 01浏览页面并检查无障碍树
  2. 02操作表单和页面元素
  3. 03查看控制台消息与网络请求
  4. 04执行 JavaScript 表达式
  5. 05处理对话框、标签页和等待

适用场景

  1. 01检查网页结构与布局
  2. 02填写表单并验证提交结果
  3. 03排查 JavaScript 错误和失败的 API 请求
  4. 04测试多步骤注册或向导流程

MCP 相关

此技能通过直接工具调用使用 Playwright MCP 服务,涵盖浏览器导航、检查、交互和调试工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/darraghh1/my-claude-setup --skill playwright-mcp

安装后在 Claude Code 中输入/playwright-mcp确认已加载。

详细介绍

Playwright MCP 浏览器自动化

你精通使用 Playwright MCP 服务进行实时浏览器交互。本技能将教你通过直接控制浏览器来浏览页面、检查元素、填写表单和调试 Web UI。

重要:这些是直接工具调用

MCP 工具是直接工具调用,与 Read、Grep 或 Bash 完全一样。它们不是 CLI 命令。

正确——直接调用工具:

Tool: mcp__playwright__browser_navigate
Parameters: { "url": "http://localhost:3010" }

错误——不要通过 shell 调用:

Bash: claude mcp call playwright browser_navigate ...  # This does not work

所有 Playwright MCP 工具都使用 mcp__playwright__ 前缀。

重要:交互前务必先获取快照

browser_snapshot 会返回一个无障碍树,其中包含每个交互元素的 ref 值。点击、输入或悬停之前,必须先获取快照——所有交互工具都需要 ref 值。

重要:注意输出大小

工具输出大小说明
browser_snapshot中到大完整的无障碍树,大小随页面复杂度变化
browser_take_screenshot大Base64 图像,请谨慎使用
browser_console_messages不定在日志繁杂的应用中可能非常大
browser_network_requests不定在 API 密集型页面中可能非常大
browser_navigate小仅返回页面标题
browser_click小点击后返回快照
browser_type小输入后返回快照

了解页面结构时,优先使用 browser_snapshot,而非 browser_take_screenshot。截图仅用于视觉验证。

工作流 1:浏览与检查

**触发条件:**用户说“打开此页面”“页面上有什么?”“检查 UI”“检查布局”

步骤
  1. 浏览到页面:

    browser_navigate({ url: "http://localhost:3010/home/team-slug/settings" })
    
  2. 获取页面结构(交互前务必执行此步骤):

    browser_snapshot → accessibility tree with ref values for all elements
    
  3. **分析快照:**根据 ref 值识别交互元素(按钮、链接、输入框)。向用户报告页面结构。

决策:快照还是截图
需求使用
了解页面结构、查找元素browser_snapshot(结构化,包含 ref 值)
视觉外观、布局问题、CSS 问题browser_take_screenshot(视觉图像)
同时了解结构和外观先获取快照;如需视觉检查,再截图

工作流 2:表单交互

**触发条件:**用户说“填写表单”“提交登录”“在字段中输入”“选择一个选项”

步骤
  1. 获取快照以查找表单字段:

    browser_snapshot → identify input refs and their labels
    
  2. 填写字段(根据复杂度选择):

    • 单个字段:browser_type({ ref: "input-ref", text: "value" })
    • 多个字段:browser_fill_form({ fields: [{ ref: "ref1", value: "val1" }, { ref: "ref2", value: "val2" }] })
    • 下拉菜单:browser_select_option({ ref: "select-ref", values: ["option-value"] })
  3. 提交表单:

    browser_click({ ref: "submit-button-ref" })
    
  4. 验证结果:

    browser_snapshot → check for success message, error states, or navigation
    
常用模式
  • 对于多字段表单,browser_fill_form 比多次调用 browser_type 更快
  • 可以使用 browser_press_key({ key: "Enter" }) 代替点击提交按钮
  • 提交后,如有需要可等待:调用 browser_wait_for({ text: "Success" }),然后获取快照

工作流 3:调试调查

**触发条件:**用户说“调试页面”“检查错误”“正在发生哪些 API 调用?”“为什么无法正常工作?”

步骤
  1. 浏览到出现问题的页面:

    browser_navigate({ url: "..." })
    
  2. 并行运行以下工具(它们彼此独立):

    browser_console_messages → JavaScript errors, warnings, logs
    browser_network_requests → API calls, failed requests, status codes
    
  3. 获取页面快照:

    browser_snapshot → current UI state, error messages, loading states
    
  4. 进一步调查:

    browser_evaluate({ expression: "document.querySelectorAll('.error').length" }) → run custom JS
    

工作流 4:多步骤浏览

**触发条件:**用户说“走完这个流程”“测试注册流程”“逐步完成向导”

步骤
  1. 浏览到起始页面:

    browser_navigate({ url: "..." })
    
  2. 对于每个步骤:

    browser_snapshot → find the next action
    browser_click({ ref: "..." }) or browser_type({ ref: "...", text: "..." })
    browser_wait_for({ text: "expected content" }) → if page loads async
    
  3. 如出现对话框,请进行处理:

    browser_handle_dialog({ accept: true }) → confirm/alert/prompt
    
  4. 如有需要,请返回:

    browser_navigate_back
    

工具参考

导航
工具用途参数
browser_navigate前往 URLurl(必填)
browser_navigate_back返回上一页无
browser_wait_for等待文本或指定时长text 或 timeout(毫秒)
browser_tabs列出/切换标签页无,或使用 index 切换
检查
工具用途参数
browser_snapshot获取包含 refs 的无障碍树无
browser_take_screenshot获取屏幕截图无
browser_console_messages获取 JS 控制台输出无
browser_network_requests获取网络活动无
交互
工具用途参数
browser_click点击元素ref(来自 snapshot)
browser_type输入文本ref、text
browser_fill_form填写多个字段fields 数组,元素为 { ref, value }
browser_select_option选择下拉选项ref、values 数组
browser_hover悬停在元素上ref
browser_drag拖放startRef、endRef
browser_press_key键盘输入key(例如 "Enter"、"Tab")
browser_file_upload上传文件ref、paths 数组
browser_handle_dialog确认/关闭对话框accept 布尔值
高级功能
工具用途参数
browser_evaluate运行 JavaScriptexpression
browser_resize调整视口大小width、height
browser_close关闭页面无
browser_install安装浏览器无
browser_run_code运行 Playwright 代码code 字符串

故障排除

“No browser running”或连接错误

Playwright MCP 服务会管理自己的浏览器实例。如果工具调用失败:

  1. 尝试运行 browser_install,确保浏览器二进制文件可用
  2. 尝试使用 browser_navigate 前往一个简单的 URL,这可能会初始化浏览器
导航后找不到元素

包含异步内容的页面可能尚未完成渲染:

  1. 在 snapshot 之前使用 browser_wait_for({ text: "expected content" })
  2. 使用 browser_wait_for({ timeout: 2000 }) 按指定时长等待
代理或内部域名

MCP 浏览器无法访问需要网络隧道的代理或内部域名。本地 Supabase 请直接使用 http://127.0.0.1:54321。

Snapshot 返回的内容过大

复杂页面会生成很大的无障碍树。如果输出过大:

  1. 导航到特定子页面,而不是整个应用
  2. 使用 browser_evaluate 查询特定元素

评论

支持 Markdown