通过 Playwright MCP 实现浏览器自动化。可导航网站、点击元素、填写表单、截图、提取数据及调试真实浏览器工作流。使用 w...
何时使用 : 使用此技能执行真实浏览器任务 : JS 已发送页面,多步形式,截图或 PDF , UI 调试, Playwright 测试作者, MCP 驱动浏览
功能概述
何时使用 : 使用此技能执行真实浏览器任务 : JS 已发送页面,多步形式,截图或 PDF , UI 调试, Playwright 测试作者, MCP 驱动浏览是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
适用场景
请在执行真实浏览器任务时使用本技能:例如需 JavaScript 渲染的页面、多步骤表单、截图或生成 PDF、UI 调试、Playwright 测试编写、MCP 驱动的浏览器控制,以及从已渲染页面中进行结构化数据提取。
当静态 fetch 方式不足以满足需求,或任务依赖于浏览器事件、可见 DOM 状态、认证上下文、文件上传/下载,或面向用户的内容渲染时,应优先选用本技能。
若用户主要希望智能体通过简单动作(如 navigate、click、fill、screenshot、download 或 extract)驱动浏览器,则应将 MCP 视为首选路径。
对于脚本与测试,请直接使用 Playwright;当浏览器工具已集成到当前工作流中、用户明确要求使用 MCP,或相比编写新自动化代码,直接执行浏览器操作是最快路径时,则选用 MCP。
本技能的核心适用场景是仓库自有(repo-owned)的浏览器相关工作:测试、调试、问题复现(repros)、截图及确定性自动化。将“渲染后页面的数据提取”视为次要用例,而非默认定位。
架构设计
本技能为纯指令型(instruction-only),默认不创建本地内存、不初始化文件夹、也不持久化浏览器配置文件(profiles)。
仅加载完成任务所需的最小参考文件。除非仓库已对认证状态标准化,且用户明确要求复用浏览器会话(browser-session reuse),否则应保持认证状态为临时性。
快速入门
MCP 浏览器路径
npx @playwright/mcp --headless
当智能体已具备可用的浏览器工具,或用户希望实现浏览器自动化而无需编写新的 Playwright 代码时,请采用此路径。
常见 MCP 操作
典型的 Playwright MCP 工具操作包括:
browser_navigate:打开页面browser_click和browser_press:交互操作browser_type与browser_select_option:表单填写与选项选择browser_snapshot与browser_evaluate:页面检查与结构化数据提取browser_choose_file:文件上传- 通过当前活跃的浏览器工作流捕获截图、PDF、trace 及下载内容
常见浏览器任务结果
| 目标 | 典型 MCP 风格操作 |
|---|---|
| 打开并检查一个网站 | navigate、wait、inspect、screenshot |
| 完成一个表单 | navigate、click、fill、select、submit |
| 采集证据 | screenshot、PDF、download、trace |
| 提取结构化页面数据 | navigate、等待渲染完成、extract |
| 复现 UI 缺陷 | 启用 headed 模式运行、录制 trace、检查控制台或网络请求 |
已有测试套件
npx playwright test npx playwright test --headed npx playwright test --trace on
引导生成选择器与操作流程
npx playwright codegen https://example.com
直接脚本路径
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'page.png', fullPage: true });
await browser.close();
})();
速查表
| 主题 | 文件 |
|---|---|
| 选择器策略与 frame 处理 | selectors.md |
| 失败分析、trace、日志与 headed 运行 | debugging.md |
| 测试架构、Mock、认证与断言 | testing.md |
| CI 默认配置、重试机制、Worker 并行与失败产物 | ci-cd.md |
| 渲染后页面提取、分页处理与合理限流 | scraping.md |
方案选型指南
| 场景 | 最佳路径 | 原因 |
|---|---|---|
| 静态 HTML 或简单的 HTTP 响应已足够 | 优先使用更轻量的 fetch 路径 | 更快、成本更低、更稳定 |
| 需要可靠的选择器或操作流程初稿 | 从 codegen 或 headed 探索性运行起步 |
比从源码或过期 DOM 中猜测选择器更高效 |
| 本地应用、预发布环境(staging app)或仓库自有端到端(E2E)测试套件 | 使用 @playwright/test |
最适合可重复执行的测试与断言 |
| 一次性浏览器自动化、截图、下载或渲染后数据提取 | 使用 Playwright 直接 API | 简洁、明确、便于在代码中调试 |
智能体/浏览器工具工作流已依赖 browser_* 工具,或用户明确要求无代码浏览器控制 |
使用 Playwright MCP | 针对 navigate-click-fill-screenshot 类工作流的最快路径 |
| CI 失败、测试不稳定(flake)或环境漂移(environment drift) | 从 debugging.md 和 ci-cd.md 入手 |
trace 与失败产物的价值远高于新增代码 |
核心准则
1. 验证用户可见行为与真实浏览器边界
- 避免在单元测试或 API 测试即可低成本覆盖的实现细节上投入 Playwright 资源。
- 当成功与否取决于渲染后的 UI、可操作性(actionability)、认证、上传/下载、导航,或仅浏览器支持的行为时,才应使用 Playwright。
2. 先保证隔离性,再追求智能化
- 确保测试与脚本相互独立,使重试、并行执行和重新运行不会继承隐式状态。
- 优先扩展仓库现有的 Playwright 测试框架、配置与 fixture,而非从零构建一套平行测试体系。
- 除非测试套件本身被显式设计为支持共享,否则不得在并行运行间共享可变账号、浏览器状态或服务端数据。
3. 行动前先侦察
- 在锁定选择器或断言前,先打开页面、等待并检查实际渲染状态。
- 使用
codegen、headed 模式或 trace 来发现稳定的选择器,而非凭源码或过期 DOM 猜测。 - 对于偶发性失败(flaky)或仅在 CI 中出现的问题,应在重写选择器或等待逻辑前,先捕获 trace。
4. 优先选用强健的选择器与面向 Web 的断言
- 优先使用 role、label、text、alt 文本、title 或 test ID,其次才是 CSS 选择器或 XPath。
- 使用 Playwright 断言验证用户可见的结果,而非仅确认 click 或 fill 命令是否成功执行。
- 若选择器存在歧义,请明确消除歧义;除非位置本身就是待测行为,否则不应使用
first()、last()或nth()来压制严格性警告。
5. 基于可操作性与应用状态等待,而非任意时间延迟
- 在引入 sleep 或强制操作前,应首先信任 Playwright 内置的可操作性检查机制。
- 优先使用
expect、URL 等待、响应等待,以及显式的应用就绪信号(app-ready signals),而非泛化的定时猜测。
6. 控制你无法掌控的外部依赖
- 当目标是验证自身应用时,应对第三方服务、不稳定的上游 API、分析埋点噪声及跨域依赖进行 Mock 或隔离。
- 对于渲染后页面提取,应优先调用有文档支持的 API 或标准 HTTP 接口,而非驱动完整浏览器。
- 除非用户明确要求验证该集成本身,否则不应让第三方小部件(widgets)或上游集成成为测试套件不稳定(flake)的根本原因。
7. 显式管理认证、生产环境访问与数据持久化
- 默认不持久化保存的浏览器状态。
- 仅当仓库已有标准化认证流程,或用户明确要求复用会话时,才复用认证状态。
- 对于具有破坏性、涉及资金/医疗/生产环境,或其他高风险的操作流程,应优先使用预发布(staging)或本地环境,并在继续前要求用户显式确认。
Playwright 常见陷阱
- 从源码中猜测选择器,或使用
first()、last()、nth()抑制歧义 → 自动化仅能成功一次,随后即变得不稳定。 - 仓库已有配置、fixture、认证设置或约定时,仍新建一套 Playwright 结构 → 新流程与现有测试框架冲突,徒增维护成本。
- 测试内部实现细节,而非用户可见结果 → 测试套件全部通过,但用户路径依然不可用。
- 在并行测试中共享同一认证状态,且这些测试会修改服务端数据 → 失败将依赖执行顺序,结果难以信任。
- 未理解遮罩层(overlays)、禁用状态(disabled state)或可操作性前提,就使用
force: true→ 测试掩盖了真实缺陷。 - 对高频通信的单页应用(SPA)使用
networkidle等待 → 分析埋点、轮询或 WebSocket 可能使页面持续处于“忙碌”状态,即使 UI 已准备就绪。 - 本可通过 HTTP 或 API 解决的问题,却驱动完整浏览器 → 成本更高、更易失败、有效信号更少。
- 将第三方小部件与实时上游服务视作自身产品中稳定的一部分 → 失败将失去可操作性。
外部端点
| 端点 | 发送的数据 | 用途 |
|---|---|---|
| 用户指定的网页源站(web origins) | 浏览器请求、表单输入、cookies、上传文件及任务所需页面交互 | 自动化、测试、截图、PDF 生成与渲染后数据提取 |
https://registry.npmjs.org |
可选安装过程中传输的包元数据与 tarball | 安装 Playwright 或 Playwright MCP 工具 |
除此之外,不向任何其他外部服务发送数据。
安全与隐私
离开您设备的数据包括:
- 发送至用户指定需自动化的网站的请求。
- 安装 Playwright 工具时,可选的 npm 包下载流量。
保留在本地的数据包括:
- 源代码、trace、截图、视频、PDF 及暂存于 workspace 或系统临时目录中的浏览器状态。
本技能不会:
- 创建隐藏内存文件或本地文件夹系统。
- 推荐浏览器指纹伪造(fingerprint hacks)、验证码破解服务或代理出口轮换(rotating exits)。
- 默认持久化会话或凭据。
- 向任务目标站点及可选工具安装之外的地址发起未声明的网络请求。
- 将高风险的生产环境操作流程视为可安全自动化的默认行为,除非获得用户明确指示。
可信性说明
使用本技能时,浏览器请求将发送至您指定自动化的网站,可选的包下载则经由 npm 官方仓库完成。请仅在您信任这些服务及工作流所涉网站的前提下安装与使用。
相关技能
若用户确认,可通过 clawhub install 安装以下技能:
web—— 在升级至真实浏览器前,优先采用基于 HTTP 的初步探查。scrape—— 当浏览器自动化并非主要挑战时,用于更广泛的提取类工作流。screenshots—— 浏览器操作完成后,用于捕获与优化视觉产物。multi-engine-web-search—— 在自动化前,用于搜索并筛选目标页面。
反馈
- 若本技能对您有帮助:
clawhub star playwright - 保持更新:
clawhub sync
热门AI工具
相关专题
Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。
0
2026.10.21
Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。
0
2026.10.21
Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。
0
2026.10.21
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共0课时 | 0人学习
共0课时 | 0人学习