Skip to content

Commit

Permalink
Update api.md
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaoqize committed Nov 23, 2018
1 parent 4174797 commit b94f555
Showing 1 changed file with 42 additions and 43 deletions.
85 changes: 42 additions & 43 deletions official/api.md
Expand Up @@ -576,10 +576,9 @@ const browser = await puppeteer.launch({executablePath: revisionInfo.executableP

* extends: [`EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter)

当 Puppeteer 连接到一个 Chromium 实例的时候会通过 [`puppeteer.launch`](#puppeteerlaunchoptions)[`puppeteer.connect`](#puppeteerconnectoptions) 创建一个 Browser 对象。

下面是使用 ```Browser``` 创建 ```Page``` 的例子
A Browser is created when Puppeteer connects to a Chromium instance, either through [`puppeteer.launch`](#puppeteerlaunchoptions) or [`puppeteer.connect`](#puppeteerconnectoptions).

An example of using a [Browser] to create a [Page]:
```js
const puppeteer = require('puppeteer');

Expand All @@ -590,119 +589,118 @@ puppeteer.launch().then(async browser => {
});
```

一个断开连接和重连到 [Browser] 的例子:

An example of disconnecting from and reconnecting to a [Browser]:
```js
const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
// 存储节点以便能重新连接到 Chromium
// Store the endpoint to be able to reconnect to Chromium
const browserWSEndpoint = browser.wsEndpoint();
// 从 Chromium 断开和 puppeteer 的连接
// Disconnect puppeteer from Chromium
browser.disconnect();

// 使用节点来重新建立连接
// Use the endpoint to reestablish a connection
const browser2 = await puppeteer.connect({browserWSEndpoint});
// 关闭 Chromium
// Close Chromium
await browser2.close();
});
```

#### event: 'disconnected'
当 Puppeteer 从 Chromium 实例断开连接时被触发。原因可能如下:

- Chromium 关闭或崩溃
- 调用[`browser.disconnect`](#browserdisconnect) 方法
Emitted when Puppeteer gets disconnected from the Chromium instance. This might happen because of one of the following:
- Chromium is closed or crashed
- The [`browser.disconnect`](#browserdisconnect) method was called

#### event: 'targetchanged'
- <[Target]>

当目标的 url 改变时被触发
Emitted when the url of a target changes.

> **注意** 这包括匿名浏览器上下文中的目标更改。
> **NOTE** This includes target changes in incognito browser contexts.

#### event: 'targetcreated'
- <[Target]>

当目标被创建时被触发,例如当通过 [`window.open`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) [`browser.newPage`](#browsernewpage) 打开一个新的页面。
Emitted when a target is created, for example when a new page is opened by [`window.open`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) or [`browser.newPage`](#browsernewpage).

> **注意** 这包括匿名浏览器上下文中的目标创建。
> **NOTE** This includes target creations in incognito browser contexts.
#### event: 'targetdestroyed'
- <[Target]>

当目标被销毁时被触发,例如当一个页面被关闭时。
Emitted when a target is destroyed, for example when a page is closed.

> **注意** 这包括匿名浏览器上下文中的目标销毁。
> **NOTE** This includes target destructions in incognito browser contexts.
#### browser.browserContexts()
- returns: <[Array]<[BrowserContext]>>

返回一个包含所有打开的浏览器上下文的数组。在新创建的浏览器中,这将返回 [BrowserContext] 的单一实例。
Returns an array of all open browser contexts. In a newly created browser, this will return
a single instance of [BrowserContext].

#### browser.close()
- returns: <[Promise]>

关闭 Chromium 及其所有页面(如果页面被打开的话)。[Browser] 对象本身被认为是处理过的并不能再被使用。
Closes Chromium and all of its pages (if any were opened). The [Browser] object itself is considered to be disposed and cannot be used anymore.

#### browser.createIncognitoBrowserContext()
- returns: <[Promise]<[BrowserContext]>>

创建一个匿名的浏览器上下文。这将不会与其他浏览器上下文分享 cookies/cache
Creates a new incognito browser context. This won't share cookies/cache with other browser contexts.

```js
const browser = await puppeteer.launch();
// 创建一个匿名的浏览器上下文
// Create a new incognito browser context.
const context = await browser.createIncognitoBrowserContext();
// 在一个原生的上下文中创建一个新页面
// Create a new page in a pristine context.
const page = await context.newPage();
// 做一些事情
// Do stuff
await page.goto('https://example.com');
```

#### browser.defaultBrowserContext()
- returns: <[BrowserContext]>

返回一个默认的浏览器上下文。这个上下文不能被关闭。
Returns the default browser context. The default browser context can not be closed.

#### browser.disconnect()

断开 Puppeteer 和浏览器的连接,但 Chromium 进程仍然在运行。在调用 ```disconnect``` 之后,[Browser] 对象本身被认为是处理过的并不能再被使用。
Disconnects Puppeteer from the browser, but leaves the Chromium process running. After calling `disconnect`, the [Browser] object is considered disposed and cannot be used anymore.

#### browser.newPage()
- returns: <[Promise]<[Page]>>

返回一个新的 [Page] 对象。[Page] 在一个默认的浏览器上下文中被创建。
Promise which resolves to a new [Page] object. The [Page] is created in a default browser context.

#### browser.pages()
- returns: <[Promise]<[Array]<[Page]>>> 返回一个包含所有打开的页面的数组。页面不可见的,比如 `"background_page"` 将不会列在这。不过你可以通过 [target.page()](#targetpage) 找到它们。
- returns: <[Promise]<[Array]<[Page]>>> Promise which resolves to an array of all open pages. Non visible pages, such as `"background_page"`, will not be listed here. You can find them using [target.page()](#targetpage).

返回一个浏览器中所有页面的数组。 在多个浏览器上下文的情况下,
该方法将返回一个包含所有浏览器上下文中所有页面的数组。
An array of all pages inside the Browser. In case of multiple browser contexts,
the method will return an array with all the pages in all browser contexts.

#### browser.process()
- returns: <?[ChildProcess]> 产生浏览器的进程。如果浏览器实例是由 [`puppeteer.connect`](#puppeteerconnectoptions) 方法创建的则返回null。
- returns: <?[ChildProcess]> Spawned browser process. Returns `null` if the browser instance was created with [`puppeteer.connect`](#puppeteerconnectoptions) method.

#### browser.target()
- returns: <[Target]>

返回浏览器相关的目标对象。
A target associated with the browser.

#### browser.targets()
- returns: <[Array]<[Target]>>

浏览器内所有活动目标组成的数组。在多个浏览器上下文的情况下,该方法将返回一个包含所有浏览器上下文中的所有目标的数组。
An array of all active targets inside the Browser. In case of multiple browser contexts,
the method will return an array with all the targets in all browser contexts.

#### browser.userAgent()
- returns: <[Promise]<[string]>> 返回浏览器原始的 user-agent
- returns: <[Promise]<[string]>> Promise which resolves to the browser's original user agent.

> **注意** 页面可以使用 [page.setUserAgent](#pagesetuseragentuseragent) 覆盖浏览器的 user-agent
> **NOTE** Pages can override browser user agent with [page.setUserAgent](#pagesetuseragentuseragent)
#### browser.version()
- returns: <[Promise]<[string]>> 对于无头的 Chromium,这类似于 `HeadlessChrome/61.0.3153.0`. 对于非无头的Chromium, 这类似于 `Chrome/61.0.3153.0`
- returns: <[Promise]<[string]>> For headless Chromium, this is similar to `HeadlessChrome/61.0.3153.0`. For non-headless, this is similar to `Chrome/61.0.3153.0`.

> **注意** browser.version() 的格式可能在未来版本的 Chromium 中发生变化。
> **NOTE** the format of browser.version() might change with future releases of Chromium.
#### browser.waitForTarget(predicate[, options])
- `predicate` <[function]\([Target]\):[boolean]> A function to be run for every target
Expand All @@ -719,11 +717,12 @@ const newWindowTarget = await browser.waitForTarget(target => target.url() === '
```

#### browser.wsEndpoint()
- returns: <[string]> 返回浏览器 websocket 的地址
- returns: <[string]> Browser websocket url.

[puppeteer.connect](#puppeteerconnectoptions) 可以将浏览器 websocket 端作为一个参数。其格式为 `ws://${host}:${port}/devtools/browser/<id>`
Browser websocket endpoint which can be used as an argument to
[puppeteer.connect](#puppeteerconnectoptions). The format is `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) 的信息。
You can find the `webSocketDebuggerUrl` from `http://${host}:${port}/json/version`. Learn more about the [devtools protocol](https://chromedevtools.github.io/devtools-protocol) and the [browser endpoint](https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target).

### class: BrowserContext

Expand Down Expand Up @@ -3488,4 +3487,4 @@ _使用 [Istanbul](https://github.com/istanbuljs) 输出一个覆盖率表格,
[Worker]: #class-worker "Worker"
[Accessibility]: #class-accessibility "Accessibility"
[AXNode]: #accessibilitysnapshotoptions "AXNode"
[ConnectionTransport]: ../lib/WebSocketTransport.js "ConnectionTransport"
[ConnectionTransport]: ../lib/WebSocketTransport.js "ConnectionTransport"

0 comments on commit b94f555

Please sign in to comment.