277 lines
9.2 KiB
Markdown
277 lines
9.2 KiB
Markdown
|
|
# Playwright浏览器自动化技能
|
|||
|
|
|
|||
|
|
`浏览器自动化` `Playwright` `Claude技能` `测试` `Python`
|
|||
|
|
|
|||
|
|
# Claude Code 的 Playwright 技能
|
|||
|
|
|
|||
|
|
**作为 Claude 技能的通用浏览器自动化工具**
|
|||
|
|
|
|||
|
|
这是一个 [Claude 技能](https://www.anthropic.com/blog/skills),使 Claude 能够即时编写和执行任意 Playwright 自动化脚本——从简单的页面测试到复杂的多步骤流程。以 [Claude Code 插件](https://docs.claude.com/en/docs/claude-code/plugins) 的形式打包,便于安装和分发。
|
|||
|
|
|
|||
|
|
Claude 会根据您的浏览器自动化需求自主决定何时使用此技能,仅加载特定任务所需的最少信息。
|
|||
|
|
|
|||
|
|
使用 Claude Code 构建。
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
- **任意自动化任务** - Claude 针对您的具体需求编写自定义代码,不局限于预置脚本
|
|||
|
|
- **默认可见浏览器** - 通过 `headless=False` 实时查看自动化过程
|
|||
|
|
- **零模块解析错误** - 通用执行器确保正确的模块访问
|
|||
|
|
- **渐进式信息披露** - 简洁的 SKILL.md,完整 API 参考仅在需要时加载
|
|||
|
|
- **安全清理** - 智能临时文件管理,无竞态条件
|
|||
|
|
- **全面的辅助函数** - 常见任务的可选工具函数
|
|||
|
|
- **PEP 723 元数据** - 所有脚本包含内联依赖规范
|
|||
|
|
- **始终使用 Playwright 1.57.0** - 固定精确版本以保持一致性
|
|||
|
|
|
|||
|
|
## 安装
|
|||
|
|
|
|||
|
|
本仓库以 [Claude Code 插件](https://docs.claude.com/en/docs/claude-code/plugins) 的形式组织,包含一个技能。您可以将其安装为**插件**(推荐)或将其提取为**独立技能**。
|
|||
|
|
|
|||
|
|
### 了解目录结构
|
|||
|
|
|
|||
|
|
本仓库使用带嵌套结构的插件格式:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
playwright-py-skill/ # 插件根目录
|
|||
|
|
├── .claude-plugin/ # 插件元数据
|
|||
|
|
└── skills/
|
|||
|
|
└── playwright-py-skill/ # 实际技能目录
|
|||
|
|
└── SKILL.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Claude Code 期望技能直接位于 `.claude/skills/` 下的文件夹中,因此手动安装需要提取嵌套的技能文件夹。
|
|||
|
|
|
|||
|
|
### 前置条件
|
|||
|
|
|
|||
|
|
- Python 3.10 或更高版本(PEP 723 支持所需)
|
|||
|
|
- Chromium 浏览器(Playwright 1.57.0 对应的正确版本)- 需单独安装
|
|||
|
|
- `uv` 包管理器(用于运行带有 PEP 723 元数据的脚本)
|
|||
|
|
|
|||
|
|
**注意:** 此技能**不会**安装浏览器。Chromium 必须单独安装,且版本须与 Playwright 1.57.0 匹配。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 方式一:插件安装(推荐)
|
|||
|
|
|
|||
|
|
通过 Claude Code 的插件系统安装,支持自动更新和团队分发:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 将本仓库添加为市场源
|
|||
|
|
/plugin marketplace add akaihola/playwright-py-skill
|
|||
|
|
|
|||
|
|
# 安装插件
|
|||
|
|
/plugin install playwright-py-skill@playwright-py-skill
|
|||
|
|
|
|||
|
|
# 验证安装(自动安装 playwright==1.57.0)
|
|||
|
|
cd ~/.claude/plugins/marketplaces/playwright-py-skill/skills/playwright-py-skill
|
|||
|
|
uv run run.py --help
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
运行 `/help` 验证安装,确认技能已可用。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 方式二:独立技能安装
|
|||
|
|
|
|||
|
|
若不使用插件系统,仅提取技能文件夹进行安装:
|
|||
|
|
|
|||
|
|
**全局安装(随处可用):**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 克隆到临时位置
|
|||
|
|
git clone https://github.com/akaihola/playwright-py-skill.git /tmp/playwright-py-skill-temp
|
|||
|
|
|
|||
|
|
# 仅将技能文件夹复制到全局技能目录
|
|||
|
|
mkdir -p ~/.claude/skills
|
|||
|
|
cp -r /tmp/playwright-py-skill-temp/skills/playwright-py-skill ~/.claude/skills/
|
|||
|
|
|
|||
|
|
# 进入技能目录并运行配置(自动安装 playwright==1.57.0)
|
|||
|
|
cd ~/.claude/skills/playwright-py-skill
|
|||
|
|
uv run run.py --help
|
|||
|
|
|
|||
|
|
# 清理临时文件
|
|||
|
|
rm -rf /tmp/playwright-py-skill-temp
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**项目级安装:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 克隆到临时位置
|
|||
|
|
git clone https://github.com/akaihola/playwright-py-skill.git /tmp/playwright-py-skill-temp
|
|||
|
|
|
|||
|
|
# 仅将技能文件夹复制到您的项目
|
|||
|
|
mkdir -p .claude/skills
|
|||
|
|
cp -r /tmp/playwright-py-skill-temp/skills/playwright-py-skill .claude/skills/
|
|||
|
|
|
|||
|
|
# 进入技能目录并运行配置(自动安装 playwright==1.57.0)
|
|||
|
|
cd .claude/skills/playwright-py-skill
|
|||
|
|
uv run run.py --help
|
|||
|
|
|
|||
|
|
# 清理临时文件
|
|||
|
|
rm -rf /tmp/playwright-py-skill-temp
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**为何采用此结构?** 插件格式需要 `skills/` 目录来组织插件内的多个技能。作为独立技能安装时,您只需要内层的 `skills/playwright-py-skill/` 文件夹内容。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 方式三:下载发布包
|
|||
|
|
|
|||
|
|
1. 从 [GitHub Releases](https://github.com/akaihola/playwright-py-skill/releases) 下载并解压最新发布包
|
|||
|
|
2. 仅将 `skills/playwright-py-skill/` 文件夹复制到:
|
|||
|
|
- 全局:`~/.claude/skills/playwright-py-skill`
|
|||
|
|
- 项目:`/path/to/your/project/.claude/skills/playwright-py-skill`
|
|||
|
|
3. 进入技能目录并运行配置:
|
|||
|
|
```bash
|
|||
|
|
cd ~/.claude/skills/playwright-py-skill # 或您的项目路径
|
|||
|
|
uv run run.py --help
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 验证安装
|
|||
|
|
|
|||
|
|
运行 `/help` 确认技能已加载,然后让 Claude 执行一个简单的浏览器任务,例如"测试 google.com 是否可以加载"。
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
安装完成后,只需让 Claude 测试或自动化任意浏览器任务。Claude 将编写自定义 Playwright 代码、执行并返回带有截图和控制台输出的结果。
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
### 测试任意页面
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
"测试首页"
|
|||
|
|
"检查联系表单是否正常工作"
|
|||
|
|
"验证注册流程"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 视觉测试
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
"在移动端和桌面端截取仪表盘截图"
|
|||
|
|
"跨不同视口测试响应式设计"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 交互测试
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
"填写注册表单并提交"
|
|||
|
|
"点击主导航逐项测试"
|
|||
|
|
"测试搜索功能"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 验证
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
"检查失效链接"
|
|||
|
|
"验证所有图片正常加载"
|
|||
|
|
"测试表单验证"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 工作原理
|
|||
|
|
|
|||
|
|
1. 描述您要测试或自动化的内容
|
|||
|
|
2. Claude 为任务编写自定义 Playwright 代码
|
|||
|
|
3. 通用执行器(run.py)以正确的模块解析方式运行代码
|
|||
|
|
4. 浏览器打开(默认可见)并执行自动化
|
|||
|
|
5. 显示结果,包含控制台输出和截图
|
|||
|
|
|
|||
|
|
## 配置
|
|||
|
|
|
|||
|
|
默认设置:
|
|||
|
|
|
|||
|
|
- **无头模式:** `False`(除非明确要求,否则浏览器可见)
|
|||
|
|
- **慢动作:** `100ms`(便于观察)
|
|||
|
|
- **超时:** `30s`
|
|||
|
|
- **截图:** 保存到 `/tmp/`
|
|||
|
|
- **Playwright 版本:** 始终为 `1.57.0`(精确版本)
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
playwright-py-skill/
|
|||
|
|
├── .claude-plugin/
|
|||
|
|
│ ├── plugin.json # 分发用插件元数据
|
|||
|
|
│ └── marketplace.json # 市场配置
|
|||
|
|
├── skills/
|
|||
|
|
│ └── playwright-py-skill/ # 实际技能(Claude 会发现此目录)
|
|||
|
|
│ ├── SKILL.md # Claude 读取的内容
|
|||
|
|
│ ├── run.py # 通用执行器(正确的模块解析)
|
|||
|
|
│ ├── lib/
|
|||
|
|
│ │ └── helpers.py # 可选工具函数
|
|||
|
|
│ └── API_REFERENCE.md # 完整 Playwright API 参考
|
|||
|
|
├── README.md # 本文件 - 用户文档
|
|||
|
|
├── CONTRIBUTING.md # 贡献指南
|
|||
|
|
└── LICENSE # MIT 许可证
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 高级用法
|
|||
|
|
|
|||
|
|
Claude 将在需要时自动加载 `API_REFERENCE.md`,获取关于选择器、网络拦截、身份验证、视觉回归测试、移动端模拟、性能测试和调试的全面文档。
|
|||
|
|
|
|||
|
|
## 依赖项
|
|||
|
|
|
|||
|
|
- Python 3.10+(PEP 723 支持所需)
|
|||
|
|
- `uv` 包管理器(用于运行带有 PEP 723 元数据的脚本)
|
|||
|
|
- Playwright 1.57.0(通过 PEP 723 运行脚本时自动安装)
|
|||
|
|
- Chromium 浏览器(需单独安装对应正确版本)
|
|||
|
|
|
|||
|
|
## 执行模式
|
|||
|
|
|
|||
|
|
所有脚本均包含 PEP 723 元数据块:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# /// script
|
|||
|
|
# requires-python = ">=3.10"
|
|||
|
|
# dependencies = [
|
|||
|
|
# "playwright==1.57.0",
|
|||
|
|
# "aiohttp>=3.9.0",
|
|||
|
|
# ]
|
|||
|
|
# ///
|
|||
|
|
|
|||
|
|
# 您的 Playwright 代码...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
运行 `uv run script.py` 时,会自动安装 PEP 723 块中指定的精确依赖项。
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
**Playwright 未安装?**
|
|||
|
|
进入技能目录并运行 `uv run run.py --help`(通过 PEP 723 自动安装)。
|
|||
|
|
|
|||
|
|
**模块未找到错误?**
|
|||
|
|
确保通过 `run.py` 运行自动化脚本,它负责处理模块解析。
|
|||
|
|
|
|||
|
|
**浏览器未打开?**
|
|||
|
|
确认已设置 `headless=False`。除非请求无头模式,否则技能默认显示浏览器。
|
|||
|
|
|
|||
|
|
**Chromium 版本错误?**
|
|||
|
|
请单独安装与 Playwright 1.57.0 对应的正确 Chromium 版本。该技能不安装浏览器。
|
|||
|
|
|
|||
|
|
**需要安装所有浏览器?**
|
|||
|
|
如需其他浏览器(firefox、webkit),请单独安装。该技能默认 Chromium 已安装。
|
|||
|
|
|
|||
|
|
## 什么是技能?
|
|||
|
|
|
|||
|
|
[Agent 技能](https://agentskills.io) 是包含指令、脚本和资源的文件夹,Agent 可以发现并使用它们来更准确、高效地完成任务。当您让 Claude 测试网页或自动化浏览器交互时,Claude 会发现此技能、加载必要的指令、执行自定义 Playwright 代码,并返回带有截图和控制台输出的结果。
|
|||
|
|
|
|||
|
|
此 Playwright 技能实现了[开放 Agent 技能规范](https://agentskills.io),使其与各 Agent 平台兼容。
|
|||
|
|
|
|||
|
|
## 贡献
|
|||
|
|
|
|||
|
|
欢迎贡献。Fork 本仓库,创建功能分支,提交您的更改,然后发起 Pull Request。详情参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
|||
|
|
|
|||
|
|
## 了解更多
|
|||
|
|
|
|||
|
|
- [Agent 技能规范](https://agentskills.io) - Agent 技能的开放规范
|
|||
|
|
- [Claude Code 技能文档](https://docs.claude.com/en/docs/claude-code/skills)
|
|||
|
|
- [Claude Code 插件文档](https://docs.claude.com/en/docs/claude-code/plugins)
|
|||
|
|
- [插件市场](https://docs.claude.com/en/docs/claude-code/plugin-marketplaces)
|
|||
|
|
- [API_REFERENCE.md](skills/playwright-py-skill/API_REFERENCE.md) - 完整 Playwright 文档
|
|||
|
|
- [GitHub Issues](https://github.com/akaihola/playwright-py-skill/issues)
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
MIT 许可证 - 详情参见 [LICENSE](LICENSE) 文件。
|