技能 编程开发 Puppeteer 浏览器自动化与爬取

Puppeteer 浏览器自动化与爬取

v20260701
puppeteer-skill
该技能用于生成Puppeteer脚本,实现强大的浏览器自动化、数据爬取和PDF生成功能。适用于模拟用户在网页上的复杂行为,进行全流程的网页测试,以及从动态网站中抓取数据和生成报告。
获取技能
402 次下载
概览

Puppeteer Automation Skill

When to Use

Use this skill when you need generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: "Puppeteer", "headless Chrome", "page.goto", "scrape", "PDF generation".

Core Patterns

Basic Script

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({ headless: 'new' });
    const page = await browser.newPage();
    await page.setViewport({ width: 1280, height: 720 });

    await page.goto('https://example.com', { waitUntil: 'networkidle0' });
    await page.type('#username', 'user@test.com');
    await page.type('#password', 'password123');
    await page.click('button[type="submit"]');
    await page.waitForNavigation({ waitUntil: 'networkidle0' });

    const title = await page.title();
    console.log('Title:', title);

    await browser.close();
})();

Wait Strategies

// Wait for selector
await page.waitForSelector('.result', { visible: true, timeout: 10000 });

// Wait for navigation
await Promise.all([
    page.waitForNavigation({ waitUntil: 'networkidle0' }),
    page.click('a.nav-link'),
]);

// Wait for function
await page.waitForFunction('document.querySelector(".count").innerText === "5"');

// Wait for network request
const response = await page.waitForResponse(resp =>
    resp.url().includes('/api/data') && resp.status() === 200
);

Screenshot & PDF

await page.screenshot({ path: 'screenshot.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });

Network Interception

await page.setRequestInterception(true);
page.on('request', request => {
    if (request.resourceType() === 'image') request.abort();
    else request.continue();
});

// Mock API
page.on('request', request => {
    if (request.url().includes('/api/data')) {
        request.respond({
            status: 200,
            contentType: 'application/json',
            body: JSON.stringify({ items: [] }),
        });
    } else request.continue();
});

TestMu AI Cloud

For full setup, capabilities, and shared capability reference, see reference/cloud-integration.md.

const capabilities = {
    browserName: 'Chrome', browserVersion: 'latest',
    'LT:Options': {
        platform: 'Windows 11', build: 'Puppeteer Build',
        user: process.env.LT_USERNAME, accessKey: process.env.LT_ACCESS_KEY,
    },
};

const browser = await puppeteer.connect({
    browserWSEndpoint: `wss://cdp.lambdatest.com/puppeteer?capabilities=${encodeURIComponent(JSON.stringify(capabilities))}`,
});

Quick Reference

Task Code
Launch headed puppeteer.launch({ headless: false })
Evaluate JS await page.evaluate(() => document.title)
Extract text await page.$eval('.el', el => el.textContent)
Extract all await page.$$eval('.items', els => els.map(e => e.textContent))
Set cookie await page.setCookie({ name: 'token', value: 'abc' })
Emulate device await page.emulate(puppeteer.devices['iPhone 12'])

Deep Patterns → reference/playbook.md

§ Section Lines
1 Production Setup & Configuration Launch options, Jest integration
2 Page Object Pattern BasePage, LoginPage, DashboardPage
3 Network Interception & Mocking Request mock, response capture
4 Wait Strategies DOM, network, custom conditions
5 Screenshots, PDF & Media Full page, clip, PDF, video
6 Authentication & Cookies API login, session save/restore
7 iFrame, Dialog & File Operations Upload, download, dialogs
8 Performance & Metrics Web Vitals, Lighthouse, coverage
9 Accessibility Testing axe-core integration
10 CI/CD Integration GitHub Actions, Docker
11 Debugging Quick-Reference 11 common problems
12 Best Practices Checklist 13 items

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
信息
Category 编程开发
Name puppeteer-skill
版本 v20260701
大小 4.82KB
更新时间 2026-07-14
语言