Version: 24.4.0
Puppeteer is a JavaScript library that gives you a to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi. It's totally tubular!
Puppeteer runs in headless mode by default, so you don't even need a UI to use it!
Section | Link | Description |
---|---|---|
Get started | Get started | Jump in and get your feet wet! |
API | API | Check out the awesome API docs! |
FAQ | FAQ | Got questions? We got answers! |
Contributing | Contributing | Help us make Puppeteer even better! |
Troubleshooting | Troubleshooting | Having problems? We'll help! |
Installing Puppeteer is
npm install puppeteer # Downloads compatible Chrome during installation. npm install puppeteer-core # Alternatively, install as a library, without downloading Chrome. yarn add puppeteer # Downloads compatible Chrome during installation. yarn add puppeteer-core # Alternatively, install as a library, without downloading Chrome. pnpm add puppeteer # Downloads compatible Chrome during installation. pnpm add puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Here's a totally awesome example:
import puppeteer from 'puppeteer'; // Or import puppeteer from 'puppeteer-core'; // Launch the browser and open a new blank page const browser = await puppeteer.launch(); const page = await browser.newPage(); // Navigate the page to a URL. await page.goto('https://developer.chrome.com/'); // Set screen size. await page.setViewport({width: 1080, height: 1024}); // Type into search box. await page.locator('.devsite-search-field').fill('automate beyond recorder'); // Wait and click on first result. await page.locator('.devsite-result-item-link').click(); // Locate the full title with a unique string. const textSelector = await page.locator('text/Customize and automate').waitHandle(); const fullTitle = await textSelector?.evaluate(el => el.textContent); // Print the full title. console.log('The title of this blog post is "%s".', fullTitle); await browser.close();