浏览 MCP与Skills教程与资源

Playwright MCP 实操:隔离浏览器、读取页面与填写草稿

用微软 Playwright MCP 和一个本地无外部提交的练习页,走完页面快照、元素定位、输入与结果回读,理解登录态和网页副作用的边界。

固定练习环境

先用独立浏览器,避免借用个人登录态

本例使用微软维护的 @playwright/mcp、Codex CLI、Node.js 18 或更新版本,以及用于静态页面的 Python 3。练习页只在 127.0.0.1 上提供,不需要登录、支付或真实业务账号。若没有 Python,可以用你已熟悉的本地静态服务器,保持相同端口与页面路径即可。

Playwright MCP 默认可以使用持久浏览器档案;本例明确加 --isolated。隔离会话从独立状态开始,不会自动借用你正在使用的浏览器标签页。隔离并不限制网站能接收什么请求,也不是网络安全沙箱。

完整工件

保存这个不会向外发送表单的练习页

新建空目录 C:/mcp-browser-lab,把下面内容保存成 UTF-8 的 index.html。页面没有提交地址:‘生成草稿’只把输入显示在本页,输入本身也没有自动保存。这里的标题、字段和值是完整教学工件,不是某个真实采购网站的操作授权。

index.html

MCP 草稿练习页

<!doctype html>
<html lang="zh-CN"><meta charset="utf-8"><title>MCP 草稿练习</title>
<body>
  <h1>会议预约草稿</h1>
  <label>会议主题 <input id="topic" name="topic"></label>
  <label>人数 <input id="people" type="number" min="1" max="10" value="1"></label>
  <button id="preview" type="button">生成草稿</button>
  <p id="result" role="status">尚未生成草稿</p>
  <script>
    document.querySelector('#preview').addEventListener('click', () => {
      const topic = document.querySelector('#topic').value;
      const people = document.querySelector('#people').value;
      document.querySelector('#result').textContent =
        '草稿:' + topic + ';人数:' + people + ';未提交';
    });
  </script>
</body></html>
PowerShell

仅监听本机的静态服务

python -m http.server 8765 --bind 127.0.0.1 --directory C:/mcp-browser-lab

保持这个终端运行;先在普通浏览器打开 http://127.0.0.1:8765/,确认页面标题正确。如果端口被占用,换端口并同步修改后续任务地址。

连接 Server

给这次练习一个独立的 Playwright 连接

将以下内容合并到 Codex 用户配置;本例为 Windows。npx 首次可能下载包,@latest 会随发布变化,长期使用时应核对并锁定适合自己的版本。

config.toml

隔离会话,不加载浏览器扩展

[mcp_servers.playwright_lab]
command = "cmd"
args = ["/c", "npx", "-y", "@playwright/mcp@latest", "--isolated", "--browser", "chromium"]

本例没有使用 --extension、--cdp-endpoint 或 --storage-state,因此不需要导出个人 Cookie。启动时若提示浏览器组件缺失,按该版本 Server 返回的安装指引处理;不要把‘Server 已启动’当作浏览器已启动。

可执行任务

先读取结构,再填写,最后检查页面结果

可复制使用

先读取结构,再填写,最后检查页面结果

只使用 playwright_lab 完成下面的本地练习:
1. 打开 http://127.0.0.1:8765/,报告实际 URL 与页面标题。
2. 获取页面快照,找到“会议主题”“人数”和“生成草稿”,不要猜元素引用。
3. 填入主题“MCP 连接复盘”、人数“3”。先回读字段,确认无误。
4. 点击“生成草稿”,再次读取页面快照。
5. 返回状态文本,预期是“草稿:MCP 连接复盘;人数:3;未提交”。
不要打开其他网站,不安装浏览器扩展,不使用个人登录态。
如某个步骤失败,报告失败的工具、参数与页面当前状态,不跳过它编造结果。

预期来自练习页的实际代码;只有你的运行记录出现了对应值,才能写成你的测试结果。

读懂一次操作

快照中的元素引用为何不能跨页面硬抄

先发现,再行动

browser_navigate 负责导航,browser_snapshot 返回可访问性结构,输入和点击工具再按当前工具 schema 指定元素。工具参数会随版本变化,应使用当前会话返回的 schema;从别人的截图抄一个元素编号没有稳定含义。页面导航、刷新或结构变化后,旧引用可能失效。

页面回读比‘工具返回成功’更接近任务结果

输入成功只证明某个控件接收了动作;没有证明填的是正确表单、值通过校验或服务器已保存。本例要核对最终状态文本中的主题、人数和‘未提交’三个部分,任一不符都回到同一页检查。截图适合人工复核位置,结构化快照更适合核对文本和控件。

把练习迁移到真实网站时,先重新判断副作用

本练习页不会自动保存;真实网页可能在输入、失焦、选项变化或打开链接时写入状态。因此‘还没点提交’不能推出‘什么也没改’。改用业务沙盒并检查网站实际保存机制,不能沿用这页的安全结论。

常见失败

根据最后成功的一步定位

导航显示连接被拒绝

原因
本地静态服务未运行、监听地址不同或端口不一致;尚未到页面交互层。
怎么改
先用普通浏览器访问同一 URL,确认服务终端没有退出;不要修改 MCP 工具权限来解决 HTTP 服务不存在。

页面可见,但元素引用失效

原因
页面发生刷新或快照后 DOM 已改变,先前引用不再对应当前结构。
怎么改
重新取快照并按字段标签定位;不要重复点击旧引用。

生成的草稿人数不对

原因
可能填了错误控件、旧值未被替换或网页校验改变了值。
怎么改
在点击前先回读输入值,必要时清空并重填。动作成功提示无法排除这些情况。

浏览器一打开就是个人账号

原因
配置可能使用了持久档案、扩展或加载了存储状态,和本例前提不一致。
怎么改
停止练习并核对实际启动参数;以独立 --isolated 连接重试,不清空个人浏览器档案。
依据与适用范围

本页的一手资料