关于 puppeteer-skill
puppeteer-skill 为使用 Puppeteer 的开发者提供浏览器自动化指引,包含页面交互、网络拦截、截图和 PDF 等模式,也介绍 TestMu AI 云端配置。
主要功能
- 01浏览器启动与页面导航
- 02选择器和导航等待策略
- 03截图与 PDF 导出
- 04网络请求拦截与 API 模拟
- 05TestMu AI 云端配置指引
适用场景
- 01自动访问并检查网页
- 02等待页面元素或导航完成
- 03保存整页截图或 PDF
- 04拦截图片请求或模拟 API
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill puppeteer-skill安装后在 Claude Code 中输入/puppeteer-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/advanced-patterns.mdcloud-integration.mdplaybook.md详细介绍
Puppeteer 自动化技能
核心模式
基本脚本
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', '[email protected]');
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 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
);
截图与 PDF
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true });
网络拦截
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
有关完整的设置、功能和共享功能参考,请参阅 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))}`,
});
快速参考
| 任务 | 代码 |
|---|---|
| 启动有头模式 | puppeteer.launch({ headless: false }) |
| 执行 JS | await page.evaluate(() => document.title) |
| 提取文本 | await page.$eval('.el', el => el.textContent) |
| 提取全部内容 | await page.$$eval('.items', els => els.map(e => e.textContent)) |
| 设置 Cookie | await page.setCookie({ name: 'token', value: 'abc' }) |
| 模拟设备 | await page.emulate(puppeteer.devices['iPhone 12']) |
深入模式 → reference/playbook.md
| § | 章节 | 内容 |
|---|---|---|
| 1 | 生产环境设置与配置 | 启动选项、Jest 集成 |
| 2 | 页面对象模式 | BasePage、LoginPage、DashboardPage |
| 3 | 网络拦截与模拟 | 请求模拟、响应捕获 |
| 4 | 等待策略 | DOM、网络、自定义条件 |
| 5 | 截图、PDF 与媒体 | 整页、裁剪、PDF、视频 |
| 6 | 身份验证与 Cookie | API 登录、会话保存/恢复 |
| 7 | iFrame、对话框与文件操作 | 上传、下载、对话框 |
| 8 | 性能与指标 | Web Vitals、Lighthouse、覆盖率 |
| 9 | 无障碍测试 | axe-core 集成 |
| 10 | CI/CD 集成 | GitHub Actions、Docker |
| 11 | 调试快速参考 | 11 个常见问题 |
| 12 | 最佳实践清单 | 13 项 |
评论
支持 Markdown