Node.js API for Chrome
Go to file
2024-05-22 18:18:04 +02:00
.devcontainer chore: update devcontainer.json to Node 18 (#11986) 2024-02-23 10:06:12 +01:00
.github chore(deps): Bump the all group with 2 updates (#12464) 2024-05-21 08:14:13 +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 fix: providing null to page.authenticate should disable authentication (#12203) 2024-05-22 12:18:37 +00:00
examples feat: support running Puppeteer in extensions (#12459) 2024-05-21 12:41:15 +02:00
packages chore: remove extra function 2024-05-22 18:18:04 +02:00
test fix: providing null to page.authenticate should disable authentication (#12203) 2024-05-22 12:18:37 +00:00
test-d build: fix EsLint rule and add fixer (#11826) 2024-02-05 10:26:37 +01:00
tools chore(deps-dev): Bump the dev-dependencies group with 13 updates (#12462) 2024-05-21 09:37:35 +02:00
website docs: add guides to the sidebar (#12474) 2024-05-21 15:33:42 +00: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 (#12448) 2024-05-16 09:02:04 +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-dev): Bump the dev-dependencies group with 13 updates (#12462) 2024-05-21 09:37:35 +02: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: tweak redirects and the main page (#12265) 2024-04-12 13:24:30 +02: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 fix: roll to Chrome 125.0.6422.76 (r1287751) (#12477) 2024-05-22 08:43:59 +02:00

Puppeteer

build npm puppeteer package

Puppeteer is a Node.js library which provides a high-level API to control Chrome/Chromium over the DevTools Protocol. Puppeteer runs in headless mode by default, but can be configured to run in full ("headful") Chrome/Chromium.

Get started | API | FAQ | Contributing | Troubleshooting

Example

import puppeteer from 'puppeteer';

(async () => {
  // 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();
})();