# 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/v10.4.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/](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, download into another path, or download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v10.4.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/v10.4.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/v10.4.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/v10.4.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/v10.4.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/v10.4.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/v10.4.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/+/refs/heads/main/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/v10.4.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
没有合适的资源?快使用搜索试试~ 我知道了~
开发中所需的某些必要依赖文件,可辅助开发工作进程
共636个文件
map:244个
js:157个
ts:125个
需积分: 0 0 下载量 153 浏览量
2022-02-10
09:43:07
上传
评论
收藏 170.96MB ZIP 举报
温馨提示
开发中所需的某些必要依赖文件,可辅助开发工作进程。起到轮渡文件,减少报错的作用
资源详情
资源评论
资源推荐
收起资源包目录
开发中所需的某些必要依赖文件,可辅助开发工作进程 (636个子文件)
v8_context_snapshot.bin 161KB
extract-zip.cmd 278B
rimraf.cmd 273B
icudtl.dat 9.71MB
chrome.dll 155.28MB
libGLESv2.dll 6.7MB
D3DCompiler_47.dll 4.66MB
vk_swiftshader.dll 3.61MB
libGLESv2.dll 2.6MB
mojo_core.dll 1.28MB
chrome_elf.dll 1.04MB
vulkan-1.dll 670KB
libEGL.dll 414KB
libEGL.dll 397KB
eventlog_provider.dll 6KB
interactive_ui_tests.exe 160.08MB
chrome.exe 2.03MB
chrome_pwa_launcher.exe 1.44MB
elevation_service.exe 1.43MB
notification_helper.exe 1.05MB
chrome_proxy.exe 943KB
extract-zip 322B
First Run 8B
Page.js 100KB
Page.js 98KB
FrameManager.js 36KB
FrameManager.js 35KB
DeviceDescriptors.js 35KB
DeviceDescriptors.js 35KB
JSHandle.js 32KB
JSHandle.js 31KB
Launcher.js 27KB
Launcher.js 26KB
DOMWorld.js 25KB
DOMWorld.js 25KB
websocket.js 25KB
Browser.js 20KB
Browser.js 19KB
BrowserFetcher.js 19KB
HTTPRequest.js 19KB
Input.js 19KB
HTTPRequest.js 18KB
Input.js 18KB
BrowserFetcher.js 18KB
USKeyboardLayout.js 17KB
USKeyboardLayout.js 17KB
NetworkManager.js 15KB
NetworkManager.js 14KB
permessage-deflate.js 14KB
ExecutionContext.js 13KB
ExecutionContext.js 13KB
Accessibility.js 13KB
Accessibility.js 13KB
Coverage.js 13KB
Coverage.js 12KB
receiver.js 12KB
helper.js 12KB
websocket-server.js 11KB
helper.js 11KB
sender.js 10KB
Connection.js 10KB
BrowserRunner.js 10KB
Connection.js 10KB
rimraf.js 9KB
BrowserRunner.js 9KB
install.js 8KB
Puppeteer.js 7KB
install.js 7KB
Puppeteer.js 7KB
extension.js 7KB
node-progress.js 6KB
LifecycleWatcher.js 6KB
QueryHandler.js 6KB
LifecycleWatcher.js 6KB
common.js 6KB
browser.js 6KB
QueryHandler.js 6KB
Puppeteer.js 6KB
Puppeteer.js 5KB
install.js 5KB
Target.js 5KB
Target.js 5KB
WebWorker.js 5KB
index.js 5KB
utils.js 5KB
WebWorker.js 5KB
node.js 5KB
HTTPResponse.js 5KB
BrowserConnector.js 4KB
HTTPResponse.js 4KB
event-target.js 4KB
api-docs-entry.js 4KB
stream.js 4KB
Tracing.js 4KB
EventEmitter.js 4KB
Tracing.js 4KB
EventEmitter.js 3KB
Events.js 3KB
Events.js 3KB
AriaQueryHandler.js 3KB
共 636 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
weixin_38657403
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0