Usually, you start working with Puppeteer by either launching launching or connecting to a browser.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ...
To gracefully close the browser, you use the browser.close()
method:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await browser.close();
If you need to isolate your automation tasks, use BrowserContexts. Cookies and local storage are not shared between browser contexts. Also, you can close all pages in the context by closing the context.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const context = await browser.createBrowserContext();
const page1 = await context.newPage();
const page2 = await context.newPage();
await context.close();
You can also configure permissions for a browser context:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const context = browser.defaultBrowserContext();
await context.overridePermissions('https://html5demos.com', ['geolocation']);
If you launched a browser outside of Puppeteer, you can connect to it using connect
method. Usually, you can grab a WebSocket endpoint URL from the browser output:
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222/...',
});
const page = await browser.newPage();
browser.disconnect();
:::note
Unlike browser.close()
, browser.disconnect()
does not shut down the browser or close any pages.
:::