# class:browser
### class: Browser v0.9.0
- extends: [`EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter)
當 Puppeteer 連接到一個 Chromium 實例的時候會通過 [`puppeteer.launch`](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerlaunchoptions) 或 [`puppeteer.connect`](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerconnectoptions) 創建一個 Browser 對象。
下面是使用 `Browser` 創建 `Page` 的例子
```
const puppeteer = require('puppeteer');puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.goto('https://example.com'); await browser.close();});
```
一個斷開連接和重連到 [Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser") 的例子:
```
const puppeteer = require('puppeteer');puppeteer.launch().then(async browser => { // 存儲節點以便能重新連接到 Chromium const browserWSEndpoint = browser.wsEndpoint(); // 從 Chromium 斷開和 puppeteer 的連接 browser.disconnect(); // 使用節點來重新建立連接 const browser2 = await puppeteer.connect({browserWSEndpoint}); // 關閉 Chromium await browser2.close();});
```
#### Events
- [browser.on('disconnected')](#?product=Puppeteer&version=v1.11.0&show=api-event-disconnected)v0.9.0
- [browser.on('targetchanged')](#?product=Puppeteer&version=v1.11.0&show=api-event-targetchanged)v0.9.0
- [browser.on('targetcreated')](#?product=Puppeteer&version=v1.11.0&show=api-event-targetcreated)v0.9.0
- [browser.on('targetdestroyed')](#?product=Puppeteer&version=v1.11.0&show=api-event-targetdestroyed)v0.9.0
#### Methods
- [browser.browserContexts()](#?product=Puppeteer&version=v1.11.0&show=api-browserbrowsercontexts)v0.9.0
- [browser.close()](#?product=Puppeteer&version=v1.11.0&show=api-browserclose)v0.9.0
- [browser.createIncognitoBrowserContext()](#?product=Puppeteer&version=v1.11.0&show=api-browsercreateincognitobrowsercontext)v0.9.0
- [browser.defaultBrowserContext()](#?product=Puppeteer&version=v1.11.0&show=api-browserdefaultbrowsercontext)v0.9.0
- [browser.disconnect()](#?product=Puppeteer&version=v1.11.0&show=api-browserdisconnect)v0.9.0
- [browser.newPage()](#?product=Puppeteer&version=v1.11.0&show=api-browsernewpage)v0.9.0
- [browser.pages()](#?product=Puppeteer&version=v1.11.0&show=api-browserpages)v0.9.0
- [browser.process()](#?product=Puppeteer&version=v1.11.0&show=api-browserprocess)v0.9.0
- [browser.target()](#?product=Puppeteer&version=v1.11.0&show=api-browsertarget)v0.9.0
- [browser.targets()](#?product=Puppeteer&version=v1.11.0&show=api-browsertargets)v0.9.0
- [browser.userAgent()](#?product=Puppeteer&version=v1.11.0&show=api-browseruseragent)v0.9.0
- [browser.version()](#?product=Puppeteer&version=v1.11.0&show=api-browserversion)v0.9.0
- [browser.wsEndpoint()](#?product=Puppeteer&version=v1.11.0&show=api-browserwsendpoint)v0.9.0
### Events
#### browser.on('disconnected') v0.9.0
當 Puppeteer 從 Chromium 實例斷開連接時被觸發。原因可能如下:
- Chromium 關閉或崩潰
- 調用[`browser.disconnect`](#?product=Puppeteer&version=v1.11.0&show=api-browserdisconnect) 方法
#### browser.on('targetchanged') v0.9.0
- <[Target](#?product=Puppeteer&version=v1.11.0&show=api-class-target "Target")>
當目標的 url 改變時被觸發
> **注意** 這包括匿名瀏覽器上下文中的目標更改。
#### browser.on('targetcreated') v0.9.0
- <[Target](#?product=Puppeteer&version=v1.11.0&show=api-class-target "Target")>
當目標被創建時被觸發,例如當通過 [`window.open`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) 或 [`browser.newPage`](#?product=Puppeteer&version=v1.11.0&show=api-browsernewpage) 打開一個新的頁面。
> **注意** 這包括匿名瀏覽器上下文中的目標創建。
#### browser.on('targetdestroyed') v0.9.0
- <[Target](#?product=Puppeteer&version=v1.11.0&show=api-class-target "Target")>
當目標被銷毀時被觸發,例如當一個頁面被關閉時。
> **注意** 這包括匿名瀏覽器上下文中的目標銷毀。
### Methods
#### browser.browserContexts()v0.9.0
- returns: <[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[BrowserContext](#?product=Puppeteer&version=v1.11.0&show=api-class-browsercontext "BrowserContext")>>
返回一個包含所有打開的瀏覽器上下文的數組。在新創建的瀏覽器中,這將返回 [BrowserContext](#?product=Puppeteer&version=v1.11.0&show=api-class-browsercontext "BrowserContext") 的單一實例。
#### browser.close()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
關閉 Chromium 及其所有頁面(如果頁面被打開的話)。[Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser") 對象本身被認為是處理過的并不能再被使用。
#### browser.createIncognitoBrowserContext()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[BrowserContext](#?product=Puppeteer&version=v1.11.0&show=api-class-browsercontext "BrowserContext")>>
創建一個匿名的瀏覽器上下文。這將不會與其他瀏覽器上下文分享 cookies/cache。
```
const browser = await puppeteer.launch();// 創建一個匿名的瀏覽器上下文const context = await browser.createIncognitoBrowserContext();// 在一個原生的上下文中創建一個新頁面const page = await context.newPage();// 做一些事情await page.goto('https://example.com');
```
#### browser.defaultBrowserContext()v0.9.0
- returns: <[BrowserContext](#?product=Puppeteer&version=v1.11.0&show=api-class-browsercontext "BrowserContext")>
返回一個默認的瀏覽器上下文。這個上下文不能被關閉。
#### browser.disconnect()v0.9.0
斷開 Puppeteer 和瀏覽器的連接,但 Chromium 進程仍然在運行。在調用 `disconnect` 之后,[Browser](#?product=Puppeteer&version=v1.11.0&show=api-class-browser "Browser") 對象本身被認為是處理過的并不能再被使用。
#### browser.newPage()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[Page](#?product=Puppeteer&version=v1.11.0&show=api-class-page "Page")>>
返回一個新的 [Page](#?product=Puppeteer&version=v1.11.0&show=api-class-page "Page") 對象。[Page](#?product=Puppeteer&version=v1.11.0&show=api-class-page "Page") 在一個默認的瀏覽器上下文中被創建。
#### browser.pages()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[Page](#?product=Puppeteer&version=v1.11.0&show=api-class-page "Page")>>> 返回一個包含所有打開的頁面的數組。頁面不可見的,比如 `"background_page"` 將不會列在這。不過你可以通過 [target.page()](#?product=Puppeteer&version=v1.11.0&show=api-targetpage) 找到它們。
返回一個瀏覽器中所有頁面的數組。 在多個瀏覽器上下文的情況下, 該方法將返回一個包含所有瀏覽器上下文中所有頁面的數組。
#### browser.process()v0.9.0
- returns: <?[ChildProcess](https://nodejs.org/api/child_process.html "ChildProcess")> 產生瀏覽器的進程。如果瀏覽器實例是由 [`puppeteer.connect`](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerconnectoptions) 方法創建的則返回null。
#### browser.target()v0.9.0
- returns: <[Target](#?product=Puppeteer&version=v1.11.0&show=api-class-target "Target")>
返回瀏覽器相關的目標對象。
#### browser.targets()v0.9.0
- returns: <[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array "Array")<[Target](#?product=Puppeteer&version=v1.11.0&show=api-class-target "Target")>>
瀏覽器內所有活動目標組成的數組。在多個瀏覽器上下文的情況下,該方法將返回一個包含所有瀏覽器上下文中的所有目標的數組。
#### browser.userAgent()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>> 返回瀏覽器原始的 user-agent
> **注意** 頁面可以使用 [page.setUserAgent](#?product=Puppeteer&version=v1.11.0&show=api-pagesetuseragentuseragent) 覆蓋瀏覽器的 user-agent
#### browser.version()v0.9.0
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")>> 對于無頭的 Chromium,這類似于 `HeadlessChrome/61.0.3153.0`. 對于非無頭的Chromium, 這類似于 `Chrome/61.0.3153.0。`
> **注意** browser.version() 的格式可能在未來版本的 Chromium 中發生變化。
#### browser.wsEndpoint()v0.9.0
- returns: <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 返回瀏覽器 websocket 的地址
[puppeteer.connect](#?product=Puppeteer&version=v1.11.0&show=api-puppeteerconnectoptions) 可以將瀏覽器 websocket 端作為一個參數。其格式為 `ws://${host}:${port}/devtools/browser/<id>`。
你可以從 `http://${host}:${port}/json/version` 找到 `webSocketDebuggerUrl` 。了解更多有關 [devtools protocol](https://chromedevtools.github.io/devtools-protocol) 和 [browser endpoint](https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target) 的信息。

puppeteer.js中文網|class:browser
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