Node.js API for Chrome
Go to file
2024-05-30 11:31:47 +02:00
.devcontainer chore: update devcontainer.json to Node 18 (#11986) 2024-02-23 10:06:12 +01:00
.github chore(deps): Bump github/codeql-action from 3.25.5 to 3.25.6 in the all group (#12490) 2024-05-27 07:01:40 +00:00
.vscode refactor!: enable the new-headless mode by default (#11815) 2024-02-02 13:25:43 +01:00
docker docs: document dbus in the docker guide (#12378) 2024-05-02 10:02:12 +02:00
docs docs: various documentation updates (#12500) 2024-05-29 09:14:12 +00:00
examples feat: support running Puppeteer in extensions (#12459) 2024-05-21 12:41:15 +02:00
packages ci: enable more Firefox tests that are now passing and fix others (#12502) 2024-05-30 11:31:47 +02:00
test ci: enable more Firefox tests that are now passing and fix others (#12502) 2024-05-30 11:31:47 +02:00
test-d build: fix EsLint rule and add fixer (#11826) 2024-02-05 10:26:37 +01:00
tools chore(deps): Bump glob from 10.3.15 to 10.4.1 in the dependencies group (#12487) 2024-05-27 07:22:00 +00:00
website chore(deps): Bump algoliasearch-helper from 3.19.0 to 3.20.0 in /website in the all group (#12489) 2024-05-27 11:12:21 +02:00
.editorconfig EditorConfig: 2 space indent (#195) 2017-08-03 09:50:08 -07:00
.eslintignore docs: example of puppeteer in extension (#12285) 2024-05-16 23:20:02 +08:00
.eslintrc.js chore: enable license header rule (#11855) 2024-02-06 18:07:30 +01:00
.eslintrc.types.cjs fix: remove unused imports (#8613) 2022-07-01 16:00:03 +02:00
.gitattributes chore(git): Fix line endings in text files (#4320) 2019-04-22 09:03:42 -07:00
.gitignore chore: fix EsLint for .mjs (#11629) 2024-01-08 10:02:56 +01:00
.mocharc.cjs chore: update license headers (#11563) 2024-01-03 10:11:33 +00:00
.npmrc chore(deps): Bump the dependencies group with 2 updates (#11939) 2024-02-22 11:09:12 +01:00
.nvmrc ci: test node-version-file (#11737) 2024-01-24 11:27:35 +01:00
.prettierignore chore: fix EsLint for .mjs (#11629) 2024-01-08 10:02:56 +01:00
.prettierrc.cjs docs: improve docs (#9179) 2022-10-28 08:49:28 +02:00
.release-please-manifest.json chore: release main (#12456) 2024-05-24 07:26:52 +00:00
Herebyfile.mjs docs: remove TOC in main page (#12270) 2024-04-15 06:23:56 +00:00
LICENSE chore: use https URL for license info (#6279) 2020-08-10 10:35:07 +02:00
package-lock.json chore(deps): Bump glob from 10.3.15 to 10.4.1 in the dependencies group (#12487) 2024-05-27 07:22:00 +00:00
package.json chore(deps-dev): Bump the dev-dependencies group with 13 updates (#12462) 2024-05-21 09:37:35 +02:00
README.md docs: various documentation updates (#12500) 2024-05-29 09:14:12 +00:00
release-please-config.json chore: add Docker changes to release (#12373) 2024-04-30 16:36:25 +00:00
SECURITY.md chore: Add a security policy (#9547) 2023-01-19 17:03:59 +01:00
tsconfig.base.json chore: update dependencies (#10785) 2023-08-28 13:01:52 +02:00
tsdoc.json chore: update license headers (#11563) 2024-01-03 10:11:33 +00:00
versions.js chore: release main (#12456) 2024-05-24 07:26:52 +00:00

Puppeteer

build npm puppeteer package

Puppeteer is a Node.js library which provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi. Puppeteer runs in the headless (no visible UI) by default but can be configured to run in a visible ("headful") browser.

Get started | API | FAQ | Contributing | Troubleshooting

Installation

npm i puppeteer # Downloads compatible Chrome during installation.
npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.

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.type('.devsite-search-field', 'automate beyond recorder');

// Wait and click on first result.
const searchResultSelector = '.devsite-result-item-link';
await page.waitForSelector(searchResultSelector);
await page.click(searchResultSelector);

// Locate the full title with a unique string.
const textSelector = await page.waitForSelector('text/Customize and automate');
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();