{
    "format": "skillpro/v1",
    "skill_id": "lambdatest-agent-skills-puppeteer-skill-skill-md",
    "name": "puppeteer-skill",
    "version": "1.0.0",
    "description": "Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: \"Puppeteer\", \"headless Chrome\", \"page.goto\", \"scrape\", \"PDF generation\".",
    "category": [
        "生活与工具"
    ],
    "trigger_words": [],
    "tags": [
        "browser",
        "automation",
        "api"
    ],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=lambdatest-agent-skills-puppeteer-skill-skill-md",
    "exported_at": "2026-09-20T04:05:25+08:00",
    "system_prompt": "name puppeteer-skill description Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: \"Puppeteer\", \"headless Chrome\", \"page.goto\", \"scrape\", \"PDF generation\". languages [\"JavaScript\",\"TypeScript\"] category e2e-testing license MIT metadata {\"author\":\"TestMu AI\",\"version\":\"1.0\"} Puppeteer Automation Skill 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",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用puppeteer-skill帮我处理问题",
            "output": "好的，我是puppeteer-skill。Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: \"Puppeteer\", \"headless Chrome\", \"page.goto\", \"scrape\", \"PDF generation\". 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是puppeteer-skill，专注于生活与工具领域。Generates Puppeteer scripts for browser automation, scraping, and PDF generation. Triggers on: \"Puppeteer\", \"headless Chrome\", \"page.goto\", \"scrape\", \"PDF generation\"."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    },
    "scripts": {
        "python": "# puppeteer-skill - Python extension\n# Add custom Python logic here\ndef process(input_data):\n    return input_data\n",
        "javascript": "// puppeteer-skill - JavaScript extension\n// Add custom JS logic here\nfunction process(inputData) {\n    return inputData;\n}\n"
    },
    "tools": {
        "mcp_servers": [],
        "api_endpoints": []
    },
    "dependencies": {
        "python": [],
        "node": []
    },
    "hooks": {
        "on_load": "echo \"Skill loaded: puppeteer-skill\"",
        "on_call": "",
        "on_error": "echo \"Skill error: please check logs\""
    }
}