开发日常记录 MCP Server:Playwright 浏览器自动化

最近在研究如何让大语言模型(LLM)更高效地操作网页,发现了 Playwright MCP 这个神器。它基于 Playwright 实现了浏览器自动化的 MCP 协议,能让 LLM 通过结构化数据与网页交互,不用依赖截图或视觉模型,对开发者非常友好。记录一下这个工具的核心功能和使用心得,方便后续复盘。

一、核心特性:结构化交互的优势

Playwright MCP 最大的亮点是基于 可访问性树(Accessibility Tree) 的交互模式,和传统的像素级操作不同,它直接通过网页的语义结构(如标签、属性、文本)来定位元素,避免了截图识别的不确定性。实测下来,这种方式有几个明显优势:

  • 轻量高效:不需要处理图像数据,传输和解析速度更快,资源占用低。
  • LLM 友好:返回的页面快照是纯 JSON 结构化数据,LLM 可以直接理解元素层级和属性,省去了视觉模型的集成成本。
  • 操作确定性强:通过元素引用(ref)精确定位,不会因为页面布局微小变化导致操作失败,适合自动化场景。

另外,它支持两种模式:

  • 持久化配置:默认存储登录状态等数据,适合需要保持会话的场景(比如自动填表)。
  • 隔离模式:每次会话独立,关闭后状态清空,适合安全要求高或一次性任务(如临时数据抓取)。

二、配置与部署

推荐使用新器集Smcphub.com的 MCP 客户端。主要有以下几个优点,同时也是解决了如今 MCP 的几个痛点:
  1. 不同的 MCP Server 认证方式多样
  1. 编程语言多样化,有时候找到了想要的 MCP Server,却无法集成到应用中
  1. 还有老生常谈的问题,多个 MCP Server 的可维护性不好,降低开发效率
  1. 没有调用日志,无法知晓 MCP Server 到底做了什么,甚至报错了也不知道原因
  1. 各个 MCP Server 的实现方式不一,有的通过命令行参数启动,有的通过环境变量,有的直接输出所有结果,有的通过 SSE 方式
  1. 就算集成了,也无法知晓用户的调用日志,也就没办法做后续的数据统计分析
  1. 还有如果客户端集成 MCP Server 会增加应用程序打包尺寸,特别是手机应用客户端的大小

三、工具列表:从基础操作到高级功能

整理了常用工具的使用场景,方便快速查找:

1. 基础操作

工具名称

中文标题

功能描述

参数说明

只读

browser_snapshot

页面快照

捕获当前页面的无障碍化快照(优于截图)

browser_click

点击操作

在网页上执行点击操作

- element: 用于获取交互权限的元素描述- ref: 页面快照中的精确元素引用

browser_drag

鼠标拖拽

在两个元素之间执行拖放操作

- startElement: 源元素描述- startRef: 源元素引用- endElement: 目标元素描述- endRef: 目标元素引用

browser_hover

鼠标悬停

在页面元素上执行悬停操作

- element: 元素描述- ref: 元素引用

browser_type

文本输入

向可编辑元素中输入文本

- element: 元素描述- ref: 元素引用- text: 输入文本- submit: 是否提交(可选)- slowly: 是否逐字符输入(可选)

browser_select_option

选项选择

在下拉菜单中选择一个或多个选项

- element: 元素描述- ref: 元素引用- values: 要选择的值数组

browser_press_key

按键操作

模拟键盘按键操作

- key: 按键名称(如 ArrowLeft 或字符 a)

browser_wait_for

等待条件

等待文本出现 / 消失或指定时间流逝

- time: 等待时间(秒,可选)- text: 等待出现的文本(可选)- textGone: 等待消失的文本(可选)

browser_file_upload

文件上传

上传一个或多个文件

- paths: 要上传文件的绝对路径数组

browser_handle_dialog

对话框处理

处理页面对话框(确认 / 取消 / 输入)

- accept: 是否接受对话框- promptText: 提示框输入文本(可选)

2. 导航操作

工具名称

中文标题

功能描述

参数说明

只读

browser_navigate

页面导航

导航到指定 URL

- url: 目标 URL

browser_navigate_back

返回上一页

导航到历史记录的上一页

browser_navigate_forward

前进到下一页

导航到历史记录的下一页

3. 资源操作

工具名称

中文标题

功能描述

参数说明

只读

browser_take_screenshot

截图

捕获当前页面截图(不可用于交互,仅用于查看)

- raw: 是否返回无损 PNG 格式(可选)- filename: 保存文件名(可选)- element: 元素描述(可选,需配合 ref)- ref: 元素引用(可选,需配合 element)

browser_pdf_save

保存为 PDF

将当前页面保存为 PDF 文件

- filename: 保存文件名(可选)

browser_network_requests

网络请求列表

返回自页面加载以来的所有网络请求记录

browser_console_messages

控制台消息

返回页面的所有控制台消息

4. 实用工具

工具名称

中文标题

功能描述

参数说明

只读

browser_install

安装浏览器

安装配置文件中指定的浏览器

browser_close

关闭浏览器

关闭当前页面

browser_resize

调整窗口大小

调整浏览器窗口尺寸

- width: 宽度(像素)- height: 高度(像素)

5. 标签页管理

工具名称

中文标题

功能描述

参数说明

只读

browser_tab_list

列出标签页

获取当前所有打开的标签页列表

browser_tab_new

新建标签页

打开一个新标签页

- url: 新标签页导航的 URL(可选)

browser_tab_select

切换标签页

通过索引选择指定标签页

- index: 标签页索引(从 0 开始)

browser_tab_close

关闭标签页

关闭指定标签页(默认关闭当前标签页)

- index: 标签页索引(可选)

6. 测试工具

工具名称

中文标题

功能描述

参数说明

只读

browser_generate_playwright_test

生成测试用例

根据操作步骤生成 Playwright 测试代码

- name: 测试名称- description: 测试描述- steps: 测试步骤数组

7. 视觉模式(Vision Mode)

工具名称

中文标题

功能描述

参数说明

只读

browser_screen_capture

屏幕截图

捕获当前页面截图(用于视觉交互)

browser_screen_move_mouse

鼠标移动

将鼠标移动到指定坐标位置

- element: 元素描述- x: X 坐标- y: Y 坐标

browser_screen_click

屏幕点击

在指定坐标位置执行鼠标左键点击

- element: 元素描述- x: X 坐标- y: Y 坐标

browser_screen_drag

屏幕拖拽

在指定坐标之间执行鼠标左键拖拽操作

- element: 元素描述- startX: 起始 X 坐标- startY: 起始 Y 坐标- endX: 结束 X 坐标- endY: 结束 Y 坐标

browser_screen_type

屏幕输入

在当前焦点位置输入文本

- text: 输入文本- submit: 是否提交(可选)

browser_press_key

按键操作

模拟键盘按键操作(同基础操作)

- key: 按键名称(如 ArrowLeft 或字符 a)

browser_wait_for

等待条件

等待文本出现 / 消失或指定时间流逝(同基础操作)

- time: 等待时间(秒,可选)- text: 等待出现的文本(可选)- textGone: 等待消失的文本(可选)

browser_file_upload

文件上传

上传一个或多个文件(同基础操作)

- paths: 要上传文件的绝对路径数组

browser_handle_dialog

对话框处理

处理页面对话框(确认 / 取消 / 输入,同基础操作)

- accept: 是否接受对话框- promptText: 提示框输入文本(可选)

四、踩坑记录与最佳实践

  1. 元素定位问题
  • 建议启用--isolate参数支持启动多个浏览器实例,这样不会因为多次兵法请求而导致报错
  • 如果页面动态加载元素,需要用 browser_wait_for 等待元素出现后再操作。
  1. 会话管理
  • 持久化模式下,用户数据目录可能有权限问题,建议用绝对路径指定 --user-data-dir。
  • 隔离模式适合无状态任务,但每次都需要重新登录,可通过 --storage-state 传入已保存的登录状态。
  1. 性能优化
  • 无头模式(headless: true)性能更好,生产环境建议默认开启。
  • 批量操作时,尽量合并连续的工具调用,减少通信开销。

五、适合什么样的开发场景?

Playwright MCP 让 LLM 操作网页变得像调用 API 一样简单,尤其适合以下场景:

  • 自动化测试:生成 Playwright 测试用例,结合 LLM 自动编写测试逻辑。
  • 数据抓取:结构化提取网页信息,避免反爬机制(相比截图方案更隐蔽)。
  • 办公自动化:自动填写表单、生成报告、批量处理网页任务(如批量发布文章)。

后续可以尝试和 LangChain 结合,做一个智能网页助手,比如让 LLM 分析网页内容后自动生成摘要或执行操作。

### MCP Server 自动化测试方法与工具 MCP(Model-Driven Control Plane)服务器在自动化测试领域中扮演着重要角色,尤其结合Playwright MCP Server时,能够显著提升Web应用的自动化测试效率。以下是关于MCP Server自动化测试的方法与工具的详细介绍: #### 1. 安装与配置 Playwright MCP Server 安装 Playwright MCP Server 是实现自动化测试的第一步。根据提供的信息[^1],可以通过以下命令完成安装和启动: ```json "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@executeautomation/playwright-mcp-server"] } } ``` 上述配置通过 `npx` 命令运行 Playwright MCP Server 的安装包。此工具依赖于浏览器的可访问树,支持通过结构化命令控制网页浏览器[^3]。 #### 2. 使用 Playwright MCP Server 进行自动化测试 Playwright MCP Server 提供了强大的 Web 自动化测试能力,适用于网页导航、表单填写、数据提取等任务。其核心优势在于允许使用自然语言或结构化命令来设计测试流程,降低对复杂代码的依赖[^2]。以下是一个简单的示例,展示如何通过 Playwright MCP Server 执行自动化测试: ```python from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto("https://example.com") page.fill("input[name='username']", "test_user") page.fill("input[name='password']", "test_password") page.click("button[type='submit']") print(page.title()) browser.close() ``` #### 3. 集成 LLM 大模型以增强自动化测试 结合 LLM(Large Language Models)大模型技术,MCP Server 能够进一步简化测试流程的设计。测试人员无需精通复杂代码,仅需通过自然语言提示词即可生成测试脚本。例如,输入“打开一个网站并登录”,系统将自动生成对应的自动化测试代码。 #### 4. MCP Server 的跨平台支持 MCP Server 的 C/S 架构使其具备与 Selenium/Appium 等工具相似的技术同源性。这使得开发团队可以快速接入不同测试工具(如 Web、APP 和桌面端),实现统一管理的跨平台测试[^2]。对于企业而言,这种能力有助于降低自动化测试门槛,并加速 CI/CD 流程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值