Iván

Puppeteer

开发编程v1.0.0
作者:Iván更新于 2026-05-17puppeteer@clawhub_ivangdavila/puppeteer
测试生成脚本工具#Browser

据 AlphaMoat 统计,截至 2026-09,Puppeteer 累计下载 3,780 次、获 2 个星标,在全部 5,078 个 AI 技能中排名第 2,801 位,在「开发编程」分类(577 个)中排名第 364 位。

累计安装
127
累计下载
3,780
星标
2
全站排名
#2,801
全站前 56% · 「开发编程」前 64%
平台累计安装累计下载星标评论
ClawHub ↗1213,7151-
SkillHub ↗1273,7802—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

可用于网页抓取、端到端测试、截图、PDF 生成、页面导航、元素交互和数据提取。首次使用应先阅读集成指南;运行前确认目标网站、登录状态和允许执行的操作,避免访问或操作未授权数据。 保存工作流记忆前须取得同意,不保存凭据或私密浏览信息,不使用反检测指导。

资料发布于 2026-10-29

可以用来做什么

  • 自动化浏览器页面交互
  • 执行测试并生成截图或 PDF
  • 从网页提取结构化信息

什么时候用

  • 需要自动化 Chrome/Chromium 浏览器任务时
  • 运行前检查集成指南、目标站点、会话权限和可能产生的副作用

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

用 Puppeteer 自动化一个获准页面的检查,并列出启动前应确认的权限与副作用。

月度数据趋势

累计下载3,780
1,9132,9163,9182026-03 · 累计下载 2,0512026-05 · 累计下载 2,9532026-07 · 累计下载 3,4552026-08 · 累计下载 3,6012026-09 · 累计下载 3,78026-0326-09
星标2
1222026-03 · 星标 12026-05 · 星标 22026-07 · 星标 22026-08 · 星标 22026-09 · 星标 226-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-093,780—2
2026-083,601+4.2%2
2026-073,455—2
2026-052,953—2
2026-032,051—1

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

4.0 KB · ClawHub v1.0.0
---
name: Puppeteer
slug: puppeteer
version: 1.0.0
homepage: https://clawic.com/skills/puppeteer
description: Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
metadata: {"clawdbot":{"emoji":"🎭","requires":{"bins":["node"]},"os":["linux","darwin","win32"]}}
---

## Setup
展开全部(共 133 行)

On first use, read `setup.md` for integration guidelines.

## When to Use

User needs browser automation: web scraping, E2E testing, PDF generation, screenshots, or any headless Chrome task. Agent handles page navigation, element interaction, waiting strategies, and data extraction.

## Architecture

Scripts and outputs in `~/puppeteer/`. See `memory-template.md` for structure.

```
~/puppeteer/
├── memory.md       # Status + preferences
├── scripts/        # Reusable automation scripts
└── output/         # Screenshots, PDFs, scraped data
```

## Quick Reference

| Topic | File |
|-------|------|
| Setup process | `setup.md` |
| Memory template | `memory-template.md` |
| Selectors guide | `selectors.md` |
| Waiting patterns | `waiting.md` |

## Core Rules

### 1. Always Wait Before Acting
Never click or type immediately after navigation. Always wait for the element:
```javascript
await page.waitForSelector('#button');
await page.click('#button');
```
Clicking without waiting causes "element not found" errors 90% of the time.

### 2. Use Specific Selectors
Prefer stable selectors in this order:
1. `[data-testid="submit"]` — test attributes (most stable)
2. `#unique-id` — IDs
3. `form button[type="submit"]` — semantic combinations
4. `.class-name` — classes (least stable, changes often)

Avoid: `div > div > div > button` — breaks on any DOM change.

### 3. Handle Navigation Explicitly
After clicks that navigate, wait for navigation:
```javascript
await Promise.all([
  page.waitForNavigation(),
  page.click('a.next-page')
]);
```
Without this, the script continues before the new page loads.

### 4. Set Realistic Viewport
Always set viewport for consistent rendering:
```javascript
await page.setViewport({ width: 1280, height: 800 });
```
Default viewport is 800x600 — many sites render differently or show mobile views.

### 5. Handle Popups and Dialogs
Dismiss dialogs before they block interaction:
```javascript
page.on('dialog', async dialog => {
  await dialog.dismiss(); // or dialog.accept()
});
```
Unhandled dialogs freeze the script.

### 6. Close Browser on Errors
Always wrap in try/finally:
```javascript
const browser = await puppeteer.launch();
try {
  // ... automation code
} finally {
  await browser.close();
}
```
Leaked browser processes consume memory and ports.

### 7. Respect Rate Limits
Add delays between requests to avoid blocks:
```javascript
await page.waitForTimeout(1000 + Math.random() * 2000);
```
Hammering sites triggers CAPTCHAs and IP bans.

## Common Traps

- `page.click()` on invisible element → fails silently, use `waitForSelector` with `visible: true`
- Screenshots of elements off-screen → blank image, scroll into view first
- `page.evaluate()` returns undefined → cannot return DOM nodes, only serializable data
- Headless blocked by site → use `headless: 'new'` or set user agent
- Form submit reloads page → `page.waitForNavigation()` or data is lost
- Shadow DOM elements invisible to selectors → use `page.evaluateHandle()` to pierce shadow roots
- Cookies not persisting → launch with `userDataDir` for session persistence

## Security & Privacy

**Data that stays local:**
- All scraped data in ~/puppeteer/output/
- Browser profile in specified userDataDir

**This skill does NOT:**
- Send scraped data anywhere
- Store credentials (you provide them per-script)
- Access files outside ~/puppeteer/

## Related Skills
Install with `clawhub install <slug>` if user confirms:
- `playwright` — Cross-browser automation alternative
- `chrome` — Chrome DevTools and debugging
- `web` — General web development

## Feedback

- If useful: `clawhub star puppeteer`
- Stay updated: `clawhub sync`

「开发编程」分类下的热门技能

Iván 的其他技能

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。