# class:puppeteer
### class: Puppeteer v0.9.0
Puppeteer 模塊提供了一種啟動 Chromium 實例的方法。 下面就是使用 Puppeteer 進行自動化的一個典型示例:
```
const puppeteer = require('puppeteer');puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.goto('https://www.google.com'); // 其他操作... await browser.close();});
```
#### Methods
- [puppeteer.connect(options)](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerconnectoptions)v0.9.0
- [puppeteer.createBrowserFetcher(\[options\])](#?product=Puppeteer&version=v1.11.0&show=api-puppeteercreatebrowserfetcheroptions)v0.9.0
- [puppeteer.defaultArgs(\[options\])](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerdefaultargsoptions)v0.9.0
- [puppeteer.executablePath()](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerexecutablepath)v0.9.0
- [puppeteer.launch(\[options\])](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerlaunchoptions)v0.9.0
### Methods
#### puppeteer.connect(options)v0.9.0
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")>
- `browserWSEndpoint` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 一個 [瀏覽器 websocket 端點鏈接](#?product=Puppeteer&version=v1.11.0&show=api-browserwsendpoint)。
- `ignoreHTTPSErrors` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否在導航期間忽略 HTTPS 錯誤. 默認是 `false`。
- `defaultViewport` <?[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> 為每個頁面設置一個默認視口大小。默認是 800x600。如果為 `null` 的話就禁用視圖口。
- `width` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 頁面寬度像素。
- `height` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 頁面高度像素。
- `deviceScaleFactor` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 設置設備的縮放(可以認為是 dpr)。默認是 `1`。
- `isMobile` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否在頁面中設置了 `meta viewport` 標簽。默認是 `false`。
- `hasTouch`<[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 指定viewport是否支持觸摸事件。默認是 `false`。
- `isLandscape` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 指定視口是否處于橫向模式。默認是 `false`。
- `slowMo` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 將 Puppeteer 操作減少指定的毫秒數。這樣你就可以看清發生了什么,這很有用。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser")>>
此方法將 Puppeteer 添加到已有的 Chromium 實例。
#### puppeteer.createBrowserFetcher(\[options\])v0.9.0
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")>
- `host` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 要使用的下載主機. 默認是 `https://storage.googleapis.com`。
- `path` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 下載文件夾的路徑. 默認是 `<root>/.local-chromium`, `<root>` 是 puppeteer 的包根目錄。
- `platform` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 可能的值有: `mac`, `win32`, `win64`, `linux`。默認是當前平臺。
- returns: <[BrowserFetcher](#?product=Puppeteer&version=v1.11.0&show=api-class-browserfetcher "BrowserFetcher")>
#### puppeteer.defaultArgs(\[options\])v0.9.0
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> 設置瀏覽器可選項。有一下字段:
- `headless` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否在 [無頭模式](https://developers.google.com/web/updates/2017/04/headless-chrome) 下運行瀏覽器。默認是 `true` 除非 `devtools` 選項是 `true`。
- `args` <[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>> 傳遞給瀏覽器實例的其他參數。可以 [在這](http://peter.sh/experiments/chromium-command-line-switches/) 找到 Chromium 標志列表。
- `userDataDir` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> [用戶數據目錄](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md) 的路徑。
- `devtools` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否為每個選項卡自動打開 DevTools 面板。如果這個選項是 `true` 的話, `headless` 選項將被設置為 `false`。
- returns: <[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>>
Chromium 啟動時使用的默認參數。
#### puppeteer.executablePath()v0.9.0
- returns: <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> Puppeteer 希望找到綁定的 Chromium 的路徑。 如果使用 [`PUPPETEER_SKIP_CHROMIUM_DOWNLOAD`](#?product=Puppeteer&version=v1.11.0&show=api-environment-variables) 跳過下載,則 Chromium 可能不存在。
#### puppeteer.launch(\[options\])v0.9.0
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> 在瀏覽器上設置的一組可配置選項。 有以下字段:
- `ignoreHTTPSErrors` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否在導航期間忽略 HTTPS 錯誤. 默認是 `false`。
- `headless` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否以 [無頭模式](https://developers.google.com/web/updates/2017/04/headless-chrome) 運行瀏覽器。默認是 `true`,除非 `devtools` 選項是 `true`。
- `executablePath` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 可運行 Chromium 或 Chrome 可執行文件的路徑,而不是綁定的 Chromium。如果 `executablePath` 是一個相對路徑,那么他相對于 [當前工作路徑](https://nodejs.org/api/process.html#process_process_cwd) 解析。
- `slowMo` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 將 Puppeteer 操作減少指定的毫秒數。這樣你就可以看清發生了什么,這很有用。
- `defaultViewport` <?[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> 為每個頁面設置一個默認視口大小。默認是 800x600。如果為 `null` 的話就禁用視圖口。
- `width` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 頁面寬度像素。
- `height` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 頁面高度像素。
- `deviceScaleFactor` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 設置設備的縮放(可以認為是 dpr)。默認是 `1`。
- `isMobile` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否在頁面中設置了 `meta viewport` 標簽。默認是 `false`。
- `hasTouch`<[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 指定viewport是否支持觸摸事件。默認是 `false`。
- `isLandscape` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 指定視口是否處于橫向模式。默認是 `false`。
- `args` <[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>> 傳遞給瀏覽器實例的其他參數。 這些參數可以參考 [這里](http://peter.sh/experiments/chromium-command-line-switches/)。
- `ignoreDefaultArgs` <([boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")|<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>>)> 如果是 `true`,那就不要使用 [`puppeteer.defaultArgs()`](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerdefaultargs-options)。 如果給出了數組,則過濾掉給定的默認參數。這個選項請謹慎使用。默認為 `false`。
- `handleSIGINT` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> Ctrl-C 關閉瀏覽器進程。默認是 `true`。
- `handleSIGTERM` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 關閉 SIGTERM 上的瀏覽器進程。默認是 `true`。
- `handleSIGHUP` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 關閉 SIGHUP 上的瀏覽器進程。默認是 `true`.
- `timeout` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 等待瀏覽器實例啟動的最長時間(以毫秒為單位)。默認是 `30000` (30 秒). 通過 `0` 來禁用超時。
- `dumpio` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否將瀏覽器進程標準輸出和標準錯誤輸入到 `process.stdout` 和 `process.stderr` 中。默認是 `false`。
- `userDataDir` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> [用戶數據目錄](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md) 路徑。
- `env` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> 指定瀏覽器可見的環境變量。默認是 `process.env`。
- `devtools` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 是否為每個選項卡自動打開DevTools面板。如果這個選項是 `true`,`headless` 選項將會設置成 `false`。
- `pipe` <[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type "Boolean")> 通過管道而不是WebSocket連接到瀏覽器。默認是 `false`。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser")>> 瀏覽器實例支持 Promise。
這個方法結合了下面3個步驟:
1、使用 `puppeteer.defaultArgs()` 作為一組默認值來啟動 Chromium。
2、啟動瀏覽器并根據 `executablePath` ,`handleSIGINT`,`dumpio` 和其他選項開始管理它的進程。
3、創建一個 [Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser") 類的實例,并根據 `defaultViewport`,`slowMo` 和 `ignoreHTTPSErrors` 初始化它。
`ignoreDefaultArgs` 選項可用于自定義(1)步驟的行為。 例如,要從參數中過濾掉 `--mute-audio`:
```
const browser = await puppeteer.launch({ ignoreDefaultArgs: ['--mute-audio']});
```
> **NOTE** Puppeteer 也可以用來控制 Chrome 瀏覽器, 但它與綁定的 Chromium 版本在一起使用效果最好。不能保證它可以與任何其他版本一起使用。謹慎地使用 `executablePath` 選項。
>
> 如果 Google Chrome(而不是Chromium)是首選,一個 [Chrome Canary](https://www.google.com/chrome/browser/canary.html) 或 [Dev Channel](https://www.chromium.org/getting-involved/dev-channel) 版本是建議的。
>
> 在上面的 [puppeteer.launch(\[options\])](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerlaunchoptions) 中,任何提及的 Chromium 同樣也適用于 Chrome。
>
> 參考 [這篇文章](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) 了解 Chromium and Chrome 的不同。 [`本文`](https://chromium.googlesource.com/chromium/src/+/lkcr/docs/chromium_browser_vs_google_chrome.md) 介紹了 Linux 用戶的一些差異。

puppeteer.js中文網|class:puppeteer
puppeteer.js中文文檔, puppeteer chrome, puppeteer firefox, puppeteer api 中文文檔
puppeteer.js中文網包含了Puppeteer中文文檔,最新資訊,應用案例等。Puppeteer 是一個 Node 庫,它提供了一個高級 API 來通過 DevTools 協議控制 Chromium 或 Chrome。
- Introduction
- 版本記錄
- 概要
- puppeteer-vs-puppeteer-core
- 環境變量
- error-handling
- working-with-chrome-extensions
- class:puppeteer
- class:browserfetcher
- class:browser
- class:page
- class:worker
- class:accessibility
- class:keyboard
- class:mouse
- class:touchscreen
- class:tracing
- class:dialog
- class:consolemessage
- class:frame
- class:executioncontext
- class:jshandle
- class:elementhandle
- class:request
- class:response
- class:securitydetails
- class:target
- class:cdpsession
- class:coverage
- class:timeouterror