# 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) 的信息。
![](images/pptr.png)
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