Node.js API for Chrome
Go to file
2024-04-30 11:35:30 +02:00
.devcontainer chore: update devcontainer.json to Node 18 (#11986) 2024-02-23 10:06:12 +01:00
.github ci: make installation test more like the rest of tests (#12368) 2024-04-30 11:00:43 +02:00
.vscode refactor!: enable the new-headless mode by default (#11815) 2024-02-02 13:25:43 +01:00
docker fix: set the default locale in Docker to en_US.UTF-8 (#12369) 2024-04-30 11:35:30 +02:00
docs docs: show experimental and remark blocks (#12363) 2024-04-29 14:50:39 +02:00
examples refactor: split entrypoint imports (#12350) 2024-04-29 10:58:20 +00:00
packages chore: pass down config form CDP connection to BiDi (#12366) 2024-04-30 08:23:25 +02:00
test test: do not check for secure field in test for delete cookies (#12074) 2024-04-26 16:10:59 +02:00
test-d build: fix EsLint rule and add fixer (#11826) 2024-02-05 10:26:37 +01:00
tools docs: show experimental and remark blocks (#12363) 2024-04-29 14:50:39 +02:00
website chore(deps): Bump the all group in /website with 4 updates (#12355) 2024-04-29 11:20:07 +02:00
.editorconfig EditorConfig: 2 space indent (#195) 2017-08-03 09:50:08 -07:00
.eslintignore refactor: split entrypoint imports (#12350) 2024-04-29 10:58:20 +00: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 (#12318) 2024-04-25 10:19:43 +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 6 updates (#12354) 2024-04-29 10:33:35 +02:00
package.json chore(deps-dev): Bump the dev-dependencies group with 6 updates (#12354) 2024-04-29 10:33: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: manual bump of config (#10772) 2023-08-22 13:25:42 +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 124.0.6367.91 (r1274542) (#12344) 2024-04-26 08:34:17 +00: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();
})();