Playwright (Automation + MCP + Scraper)

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 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

相关专题

更多
Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

2026.10.21

0

15

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

2026.10.21

0

16

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

2026.10.21

0

16

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程