Node.js API for Chrome
Go to file
dependabot[bot] 12a714e74d
chore(deps-dev): Bump the dev-dependencies group with 6 updates (#12354)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-29 10:33:35 +02:00
.devcontainer chore: update devcontainer.json to Node 18 (#11986) 2024-02-23 10:06:12 +01:00
.github ci: switch to macos-13 (#12326) 2024-04-25 10:02:30 +00:00
.vscode refactor!: enable the new-headless mode by default (#11815) 2024-02-02 13:25:43 +01:00
docker test: fix the headless flag in the smoke test (#11894) 2024-02-12 12:03:51 +00:00
docs docs: update links (#12351) 2024-04-26 13:13:43 +00:00
examples docs: add plugin to format package manager scripts (#12254) 2024-04-11 15:47:14 +00:00
packages chore(deps): Bump the dependencies group across 1 directory with 2 updates (#12359) 2024-04-29 08:22:10 +00: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 chore(deps-dev): Bump the dev-dependencies group with 6 updates (#12354) 2024-04-29 10:33:35 +02:00
website chore: release main (#12318) 2024-04-25 10:19:43 +00:00
.editorconfig EditorConfig: 2 space indent (#195) 2017-08-03 09:50:08 -07:00
.eslintignore chore: fix EsLint for .mjs (#11629) 2024-01-08 10:02:56 +01: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();
})();