catalog/repos/91fapiao-cn--playwright-browser-skill.md

434 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Playwright浏览器自动化技能
`浏览器自动化` `Playwright` `MCP` `OpenClaw` `Node.js`
# OpenClaw 的 Playwright 浏览器技能
一个功能强大的浏览器自动化技能,基于 Playwright 构建,通过 MCP 协议为 OpenClaw 提供 101 个完整的浏览器操作能力。
[![Windows](https://img.shields.io/badge/Windows-支持-blue.svg)](WINDOWS_GUIDE.md)
[![Node.js](https://img.shields.io/badge/Node.js-18%2B-green.svg)](https://nodejs.org/)
[![Playwright](https://img.shields.io/badge/Playwright-1.40%2B-orange.svg)](https://playwright.dev/)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
中文文档 | [English](README_EN.md)
## ✨ 特性
- 🌐 **完整的浏览器控制** - 支持 Chromium、Firefox、WebKit
- 📱 **设备模拟** - 模拟 iPhone、Android 等移动设备
- 🎯 **智能选择器** - CSS、ARIA、文本、标签等多种选择方式
- 📸 **截图和录制** - 页面截图、元素截图、PDF 生成、视频录制
- 🌍 **网络控制** - 请求拦截、响应模拟、离线模式
- 🔍 **内容提取** - 文本、HTML、链接、属性等
-**性能监控** - 页面性能指标、控制台日志
- 🎨 **高级功能** - Cookie 管理、LocalStorage、地理位置、时间控制
## 📦 安装
### 前置要求
- Node.js 18 或更高版本
- npm 或 yarn
- Windows 10/11、macOS 或 Linux
### 安装方式
#### 方式一:下载发行版(推荐,适合普通用户)
**最简单的安装方式!** 下载预编译的独立包,无需构建,开箱即用。
**Windows 用户:**
1. 下载 [playwright-browser-skill-windows-v2.1.0.zip](https://github.com/91fapiao-cn/playwright-browser-skill/releases)
2. 解压到任意目录
3. 双击运行 `auto-deploy.cmd`(推荐)或 `auto-deploy.ps1`
4. 重启 OpenClaw开始使用
**注意:** 推荐使用 `.cmd` 文件,大部分 Windows 电脑默认禁止运行 PowerShell 脚本。
**Mac/Linux 用户:**
1. 下载 [playwright-browser-skill-macos-linux-v2.1.0.tar.gz](https://github.com/91fapiao-cn/playwright-browser-skill/releases)
2. 解压:`tar -xzf playwright-browser-skill-macos-linux-v2.1.0.tar.gz`
3. 进入目录并运行:`chmod +x auto-deploy.sh && ./auto-deploy.sh`
4. 重启 OpenClaw开始使用
**发行版优势:**
- ✅ 无需 `npm install`,节省时间
- ✅ 无需构建,开箱即用
- ✅ 包含完整依赖,离线可用
- ✅ 一键自动部署
- ✅ 适合非开发者用户
#### 方式二:从源码安装(适合开发者)
```bash
# 克隆仓库
git clone https://github.com/91fapiao-cn/playwright-browser-skill.git
cd playwright-browser-skill
# 安装依赖
npm install
# 安装浏览器驱动
npm run install-browsers
# 构建项目
npm run build
```
## 🚀 使用方法
### 一键自动部署(推荐)
我们提供了跨平台的自动部署脚本,支持中英文版本,可以自动检测 OpenClaw 配置路径并完成所有配置:
#### Windows (PowerShell) - 推荐
```powershell
# 中文版
.\auto-deploy.ps1
# 英文版
.\auto-deploy-en.ps1
# 跳过构建(如果已构建)
.\auto-deploy.ps1 -SkipBuild
# 指定自定义路径
.\auto-deploy.ps1 -OpenClawPath "C:\custom\path\.openclaw"
```
#### Windows (CMD)
```cmd
REM 中文版
auto-deploy.cmd
REM 英文版
auto-deploy-en.cmd
REM 跳过构建
auto-deploy.cmd --skip-build
REM 指定自定义路径
auto-deploy.cmd --openclaw-path "C:\custom\path\.openclaw"
```
#### Mac/Linux
```bash
# 添加执行权限(首次使用)
chmod +x auto-deploy.sh auto-deploy-en.sh
# 中文版
./auto-deploy.sh
# 英文版
./auto-deploy-en.sh
# 跳过构建
./auto-deploy.sh --skip-build
# 指定自定义路径
./auto-deploy.sh --openclaw-path "/custom/path/.openclaw"
```
**自动部署功能:**
- ✅ 自动检测 OpenClaw 配置路径
- ✅ 自动构建项目(可选跳过)
- ✅ 自动部署 Skill 文件
- ✅ 自动配置 MCP 服务器
- ✅ 自动备份现有配置
- ✅ 支持自定义安装路径
📖 [查看详细部署文档](AUTO_DEPLOY_README.md)
### 手动部署
如果需要手动部署,请参考以下步骤:
#### 1. 部署 Skill 文件
```bash
# Windows
copy skill-package\skills\SKILL.md %USERPROFILE%\.openclaw\skills\playwright-browser\
# macOS/Linux
cp skill-package/skills/SKILL.md ~/.openclaw/skills/playwright-browser-skill/
```
#### 2. 配置 MCP 服务器
`~/.openclaw/settings/mcp.json` 中添加:
```json
{
"mcpServers": {
"playwright-browser": {
"command": "node",
"args": ["<项目路径>/dist/mcp-server.js"],
"disabled": false,
"autoApprove": ["browser_launch", "browser_goto", "browser_close"]
}
}
}
```
#### 3. 重启 OpenClaw
重启 OpenClaw 以加载新的技能。
#### 4. 在 OpenClaw 中启用技能
重启后,在 OpenClaw 对话中输入:
```
请使用 Playwright Browser Skill 技能来访问互联网和控制浏览器
```
或者直接测试:
```
使用 Playwright Browser Skill 启动浏览器并访问 example.com
```
这样 OpenClaw 就会知道使用这个技能来处理所有浏览器相关的任务。
## 📚 工具列表
### 浏览器管理8 个)
- `browser_launch` - 启动浏览器
- `browser_close` - 关闭浏览器
- `browser_new_page` - 创建新页面
- `browser_switch_page` - 切换页面
- 更多...
### 页面导航4 个)
- `browser_goto` - 导航到 URL
- `browser_go_back` - 返回上一页
- `browser_go_forward` - 前进
- `browser_reload` - 刷新页面
### 元素交互12 个)
- `browser_click` - 点击元素
- `browser_fill` - 填写表单
- `browser_type` - 输入文本
- `browser_select` - 选择下拉框
- 更多...
### 内容提取11 个)
- `browser_get_text` - 获取文本
- `browser_get_html` - 获取 HTML
- `browser_get_links` - 获取链接
- 更多...
[查看完整工具列表](skill-package/skills/SKILL.md)
## 💡 使用示例
### 无头模式说明
浏览器支持两种运行模式:
**有界面模式headless: false** - 推荐用于调试和开发
```javascript
browser_launch({ "headless": false }) // 显示浏览器窗口
```
**无头模式headless: true** - 推荐用于生产环境和自动化
```javascript
browser_launch({ "headless": true }) // 后台运行,不显示窗口
// 或者省略参数,默认为无头模式
browser_launch()
```
**无头模式优势:**
- ⚡ 更快的执行速度
- 💾 更低的资源占用
- 🔒 适合服务器环境
- 🤖 适合批量自动化任务
### 基础网页访问
```javascript
// 1. 启动浏览器(有界面模式,便于观察)
browser_launch({ "headless": false })
// 2. 访问网页
browser_goto({ "url": "https://example.com" })
// 3. 获取标题
browser_get_title()
// 4. 截图
browser_screenshot({ "path": "screenshot.png", "fullPage": true })
// 5. 关闭浏览器
browser_close()
```
### 无头模式自动化示例
```javascript
// 无头模式运行,适合自动化任务
browser_launch({ "headless": true })
browser_goto({ "url": "https://example.com" })
browser_get_title()
browser_screenshot({ "path": "screenshot.png" })
browser_close()
```
### 表单填写
```javascript
// 使用有界面模式便于调试
browser_launch({ "headless": false })
browser_goto({ "url": "https://example.com/login" })
browser_fill({ "selector": "#username", "value": "user@example.com" })
browser_fill({ "selector": "#password", "value": "password123" })
browser_click({ "selector": "button[type='submit']" })
browser_wait_for_selector({ "selector": ".dashboard" })
browser_close()
```
### 数据抓取
```javascript
// 数据抓取推荐使用无头模式,速度更快
browser_launch({ "headless": true })
browser_goto({ "url": "https://example.com/products" })
browser_count({ "selector": ".product-item" })
browser_get_links()
browser_evaluate({
"script": "Array.from(document.querySelectorAll('.price')).map(e => e.textContent)"
})
browser_close()
```
[查看更多示例](skill-package/skills/SKILL.md#使用示例)
## 🧪 测试
```bash
# 运行所有测试
npm test
# 运行基础测试
npm run test:basic
# 运行高级测试
npm run test:advanced
# 运行交互测试
npm run test:interaction
# 运行 MCP 服务器测试
npm run test:mcp
```
## 📖 文档
- [配置指南](CONFIGURATION_GUIDE.md) - 无头模式、浏览器选项等详细配置说明
- [自动部署指南](AUTO_DEPLOY_README.md) - 跨平台自动部署详细说明 | [English](AUTO_DEPLOY_README_EN.md)
- [完整工具文档](skill-package/skills/SKILL.md) - 所有 101 个工具的详细说明
- [Windows 使用指南](WINDOWS_GUIDE.md) - Windows 平台特定说明
- [Mac/Linux 使用指南](MAC_LINUX_GUIDE.md) - Mac 和 Linux 平台特定说明
- [快速开始指南](QUICK_START_WINDOWS.md) - 快速上手教程
- [API 文档](API.md) - API 参考
- [架构说明](ARCHITECTURE.md) - 项目架构
## 🔧 开发
### 项目结构
```
playwright-browser-skill/
├── src/
│ ├── index.ts # 核心功能实现
│ ├── mcp-server.ts # MCP 服务器
│ └── tools-registry.ts # 工具注册表
├── skill-package/
│ ├── skills/
│ │ └── SKILL.md # 技能定义文件
│ └── settings/
│ └── mcp.json # MCP 配置示例
├── test/ # 测试文件
├── examples/ # 示例代码
└── docs/ # 文档
```
### 构建
```bash
# 开发模式(监听文件变化)
npm run dev
# 生产构建
npm run build
```
## 🌍 平台支持
| 平台 | 状态 | 说明 |
|------|------|------|
| Windows 10/11 | ✅ 完全支持 | 已测试 |
| macOS | ✅ 完全支持 | 理论支持 |
| Linux | ✅ 完全支持 | 理论支持 |
## 🤝 贡献
欢迎贡献!请查看 [贡献指南](CONTRIBUTING.md)。
## 📝 更新日志
### v2.1.02026
- 🚀 新增跨平台自动部署脚本
- 🔍 自动检测 OpenClaw 配置路径
- 💾 自动备份现有配置
- 📦 支持自定义安装路径
- 📚 完整的自动部署文档
### v2.1.02026
- ✨ 新增 13 个高级工具(从 88 个增加到 101 个)
- 🎯 完善键盘鼠标控制mouseDown、mouseUp、keyboardInsertText
- 🔍 增强选择器功能getByAltText、getByTitle
- ⏱️ 完整时间控制pauseClock、resumeClock
- 📊 代码覆盖率支持getCoverage、stopCoverage
- 🌐 地理位置管理clearGeolocation、touchscreenTap
- ⏳ 高级等待功能waitForFunction、waitForLoadState
- 📈 总体覆盖率从 69% 提升到 88%
### v2.0.02026
- ✨ 新增 88 个完整的浏览器操作工具
- 📚 完整的中文文档
- 🪟 Windows 平台完整支持
- 🎯 智能选择器支持
- 📸 截图和录制功能
- 🌍 网络控制和模拟
### v1.0.0
- 🎉 初始版本
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 🙏 致谢
- [Playwright](https://playwright.dev/) - 强大的浏览器自动化框架
- [OpenClaw](https://openclaw.ai/) - AI 助手平台
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP 协议
## 📞 支持
- 📧 邮箱91fapiao@gmail.com
- 🐛 问题反馈:[GitHub Issues](https://github.com/91fapiao-cn/playwright-browser-skill/issues)
- 💬 讨论:[GitHub Discussions](https://github.com/91fapiao-cn/playwright-browser-skill/discussions)
## ⭐ Star 历史
如果这个项目对你有帮助,请给它一个 Star
---
**用 ❤️ 为 OpenClaw 社区打造**