用途
playwright-skill 是一个基于 Playwright 的浏览器自动化与网页测试技能,适合需要真实浏览器完成测试或自动化任务的场景。用户可以针对具体任务编写自定义 JavaScript 代码,而不局限于预置脚本。
主要能力
- 导航与交互:打开页面、点击、双击、填写输入框、勾选/取消勾选、选择下拉项、带延迟输入等。
- 等待策略:等待导航(waitForURL)、等待加载状态(waitForLoadState('networkidle'))、等待元素出现或隐藏(waitForSelector)。
- 截图:整页截图或对单个元素截图,可保存到 /tmp。
- 页面侦察:截图、统计按钮/链接等元素数量并输出文本,便于在未知 DOM 结构时先了解页面,再执行操作。
- 网络与控制台:拦截请求并返回模拟响应(page.route)、等待接口响应(waitForResponse)、捕获浏览器控制台输出。
- 响应式测试:在不同视口(如桌面、平板、手机)下测试并截图。
- 功能测试示例:登录流程、表单填写与提交、链接有效性检查、错误处理与超时设置等。
使用方式
前置条件:
- Node.js(从 https://nodejs.org 安装)。
- playwright npm 包:
npm install playwright(会自动安装无头 Chromium)。
基本判断流程:任务开始前先判断服务器是否已在运行。若已运行,静态 HTML 可直接导航(file:// 或 http://),动态 Web 应用建议采用“先侦察、后操作”;若未运行,则需启动服务器:单服务器直接启动后测试,多服务器则全部启动并协调测试。
服务器检测与启动:
- Mac/Linux:
lsof -i :3000;Windows:netstat -ano | findstr :3000。 - 可在脚本中通过 child_process 的 spawn 启动
npm run dev,监听输出,等待就绪后再运行测试,结束后 kill 服务器。
脚本约定:
- 测试脚本写入 /tmp,例如
/tmp/playwright-test-*.js,不写入技能目录或用户项目,便于自动清理。 - 默认使用可见浏览器
chromium.launch({ headless: false }),除非用户明确要求无头模式。 - URL 通过脚本顶部的 TARGET_URL 常量参数化,避免硬编码。
- 可用 slowMo 放慢操作便于观察。
- 建议使用 try-catch 并在 finally 中关闭浏览器等资源。
适用场景
- 视觉测试:不同视口截图、对比视觉变化、测试响应式设计。
- 功能测试:登录流程、表单验证、导航流程、错误处理。
- 校验:检查失效链接、验证图片加载、页面加载时间、可访问性检查。
- 自动化:自动填表、按用户流程点击、从页面提取数据、生成报告。
限制与注意事项
- 需要 Node.js 与 playwright npm 包作为前置依赖。
- 对动态 Web 应用(SPA、React、Vue 等),在检查 DOM 前应先等待 networkidle,否则 DOM 可能尚未就绪。
- 避免使用固定超时,应使用 waitForSelector 或 waitForLoadState 等等待策略。
- 选择器建议使用 text=、role= 或 data 属性,而非脆弱的 CSS 选择器。
- 不使用无头模式作为默认行为,除非用户明确要求。
- 关于收费、价格、平台支持范围等信息,资料中暂未提供。