Puppeteer:无头的Chrome Node.js API-开源

  • q7_573482
  • 1.1MB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-05-31 12:11
Puppeteer是一个无头节点库,提供了用于通过DevTools协议控制Chromium或Chrome的高级API。 它需要零设置,并与最适合它的Chromium版本捆绑在一起。 默认情况下,Puppeteer是无头的,因此运行起来很快。 但是,也可以将其设置为运行完整版或非无头Chrome或Chromium,只需在启动浏览器时设置无头选项即可。 您可以在浏览器中手动执行的许多操作,也可以使用Puppeteer进行,例如生成页面屏幕截图和PDF,抓取单页应用程序,测试Chrome扩展程序等。
# Puppeteer <!-- [START badges] --> [![Build status](https://github.com/puppeteer/puppeteer/workflows/run-checks/badge.svg)](https://github.com/puppeteer/puppeteer/actions?query=workflow%3Arun-checks) [![npm puppeteer package](https://img.shields.io/npm/v/puppeteer.svg)](https://npmjs.org/package/puppeteer) <!-- [END badges] --> <img src="https://user-images.githubusercontent.com/10379601/29446482-04f7036a-841f-11e7-9872-91d1fc2ea683.png" height="200" align="right"> ###### [API](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md) > Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/). Puppeteer runs [headless](https://developers.google.com/web/updates/2017/04/headless-chrome) by default, but can be configured to run full (non-headless) Chrome or Chromium. <!-- [START usecases] --> ###### What can I do? Most things that you can do manually in the browser can be done using Puppeteer! Here are a few examples to get you started: - Generate screenshots and PDFs of pages. - Crawl a SPA (Single-Page Application) and generate pre-rendered content (i.e. "SSR" (Server-Side Rendering)). - Automate form submission, UI testing, keyboard input, etc. - Create an up-to-date, automated testing environment. Run your tests directly in the latest version of Chrome using the latest JavaScript and browser features. - Capture a [timeline trace](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference) of your site to help diagnose performance issues. - Test Chrome Extensions. <!-- [END usecases] --> Give it a spin: https://try-puppeteer.appspot.com/ <!-- [START getstarted] --> ## Getting Started ### Installation To use Puppeteer in your project, run: ```bash npm i puppeteer # or "yarn add puppeteer" ``` Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, or to download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#environment-variables). ### puppeteer-core Since version 1.7.0 we publish the [`puppeteer-core`](https://www.npmjs.com/package/puppeteer-core) package, a version of Puppeteer that doesn't download any browser by default. ```bash npm i puppeteer-core # or "yarn add puppeteer-core" ``` `puppeteer-core` is intended to be a lightweight version of Puppeteer for launching an existing browser installation or for connecting to a remote one. Be sure that the version of puppeteer-core you install is compatible with the browser you intend to connect to. See [puppeteer vs puppeteer-core](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#puppeteer-vs-puppeteer-core). ### Usage Puppeteer follows the latest [maintenance LTS](https://github.com/nodejs/Release#release-schedule) version of Node. Note: Prior to v1.18.1, Puppeteer required at least Node v6.4.0. Versions from v1.18.1 to v2.1.0 rely on Node 8.9.0+. Starting from v3.0.0 Puppeteer starts to rely on Node 10.18.1+. All examples below use async/await which is only supported in Node v7.6.0 or greater. Puppeteer will be familiar to people using other browser testing frameworks. You create an instance of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#). **Example** - navigating to https://example.com and saving a screenshot as _example.png_: Save file as **example.js** ```js const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({ path: 'example.png' }); await browser.close(); })(); ``` Execute script on the command line ```bash node example.js ``` Puppeteer sets an initial page size to 800×600px, which defines the screenshot size. The page size can be customized with [`Page.setViewport()`](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#pagesetviewportviewport). **Example** - create a PDF. Save file as **hn.js** ```js const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://news.ycombinator.com', { waitUntil: 'networkidle2', }); await page.pdf({ path: 'hn.pdf', format: 'a4' }); await browser.close(); })(); ``` Execute script on the command line ```bash node hn.js ``` See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#pagepdfoptions) for more information about creating pdfs. **Example** - evaluate script in the context of the page Save file as **get-dimensions.js** ```js const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); // Get the "viewport" of the page, as reported by the page. const dimensions = await page.evaluate(() => { return { width: document.documentElement.clientWidth, height: document.documentElement.clientHeight, deviceScaleFactor: window.devicePixelRatio, }; }); console.log('Dimensions:', dimensions); await browser.close(); })(); ``` Execute script on the command line ```bash node get-dimensions.js ``` See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`. <!-- [END getstarted] --> <!-- [START runtimesettings] --> ## Default runtime settings **1. Uses Headless mode** Puppeteer launches Chromium in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). To launch a full version of Chromium, set the [`headless` option](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#puppeteerlaunchoptions) when launching a browser: ```js const browser = await puppeteer.launch({ headless: false }); // default is true ``` **2. Runs a bundled version of Chromium** By default, Puppeteer downloads and uses a specific version of Chromium so its API is guaranteed to work out of the box. To use Puppeteer with a different version of Chrome or Chromium, pass in the executable's path when creating a `Browser` instance: ```js const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' }); ``` You can also use Puppeteer with Firefox Nightly (experimental support). See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md#puppeteerlaunchoptions) for more information. See [`this article`](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for a description of the differences between Chromium and Chrome. [`This article`](https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md) describes some differences for Linux users. **3. Creates a fresh user profile** Puppeteer creates its own browser user profile which it **cleans up on every run**. <!-- [END runtimesettings] --> ## Resources - [API Documentation](https://github.com/puppeteer/puppeteer/blob/v8.0.0/docs/api.md) - [Examples](https://github.com/puppeteer/puppeteer/tree/main/examples/) - [Community list of Puppeteer resources](https://github.com/transitive-bullshit/awesome-puppeteer) <!-- [START debugging] --> ## Debugging tips 1. Turn off headless mode - sometimes it's useful to see what the browser is displaying. Instead of launching in headless mode, launch a full version of
    • puppeteer:无头的Chrome Node.js API
      Puppeteer是一个Node库,它提供了高级API来通过控制Chrome或Chromium。 Puppeteer默认情况下运行,但可以配置为运行完整(无头)的Chrome或Chromium。 我能做什么? 您可以在浏览器中手动执行的大多数操作都可以...
    • 木偶:无头的Chrome Node.js API
      Puppeteer是一个Node库,它提供了高级API来通过控制Chrome或Chromium。 Puppeteer默认情况下运行,但可以配置为运行完整(无头)的Chrome或Chromium。 我能做些什么? 您可以在浏览器中手动执行的大多数操作都可以...
    • Puppeteer:无头的Chrome Node.js API-开源
      Puppeteer是一个无头节点库,提供了用于通过DevTools协议控制Chromium或Chrome的高级API。 它需要零设置,并与最适合它的Chromium版本捆绑在一起。 默认情况下,Puppeteer是无头的,因此运行起来很快。 但是,也可以...
    • Node.js-Tutorial:Node.js
      Node.js:教程 ... - Runs on top of the V8 JavaScript Runtime (same that is running on the Chrome browser) What can you build? - Web socket Server - File Upload client - Ad Server - Real
    • Puppeteer Headless Chrome Node.js API-Node.js开发
      Puppeteer是一个Node库,它提供了高级API来通过DevTools协议控制Chrome或Chromium。 Puppeteer默认情况下无头运行,但可以配置为运行完整(无头)的Chrome或Chromium。 Puppeteer是一个Node库,它提供了高级API来...
    • sinon-chrome, 使用 node.js 测试 Chrome 扩展.zip
      sinon-chrome, 使用 node.js 测试 Chrome 扩展 sinonsinon chrome是 单元测试 Chromium 和 Firefox 扩展和应用的helper 工具。 它使用sinon存根模拟所有扩展 api,允许你在 node.js 中运行测试而无需实际浏览器。...
    • Node.js-inspect-process使用chrome-devtools用于Node.js简单调试的工具
    • node.js:node.js连接
      node.js 来自Monggodb mongojs的node.js连接
    • Node.js-用于Node.jsChrome调试协议接口
    • SIM800C_MQTT.rar