class: Browser

当Puppeteer连接到一个Chromium实例的时候会创建一个Browser对象。通过 puppeteer.launchpuppeteer.connect

以下是使用Browser去创建一个Page的一个例子

  1. const puppeteer = require('puppeteer');
  2. puppeteer.launch().then(async browser => {
  3. const page = await browser.newPage();
  4. await page.goto('https://example.com');
  5. await browser.close();
  6. });

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

  1. const puppeteer = require('puppeteer');
  2. puppeteer.launch().then(async browser => {
  3. // 存储节点以便能重新连接到Chromium
  4. const browserWSEndpoint = browser.wsEndpoint();
  5. // 从Chromium断开和puppeteer的连接
  6. browser.disconnect();
  7. // 使用节点来重新建立连接
  8. const browser2 = await puppeteer.connect({browserWSEndpoint});
  9. // 关闭 Chromium
  10. await browser2.close();
  11. });

event: ‘disconnected’

当Puppeteer从Chromium 实例断开连接时被触发。这可能由于以下原因而发生:

event: ‘targetchanged’

  • <[Target]>

当目标的url改变时被触发

注意 这包括匿名浏览器上下文中的目标更改。

event: ‘targetcreated’

  • <[Target]>

当目标被创建时被触发,例如当通过 window.openbrowser.newPage 打开一个新的页面。

注意 这包括匿名浏览器上下文中的目标创建。

event: ‘targetdestroyed’

  • <[Target]>

当目标被销毁时被触发,例如当一个页面被关闭时。

注意 这包括匿名浏览器上下文中的目标销毁。

browser.browserContexts()

  • returns: <[Array]<[BrowserContext]>>

返回一个包含所有打开的浏览器上下文的数组。在新创建的浏览器中,这将返回 [BrowserContext]的单一实例。

browser.close()

  • returns: <[Promise]>

关闭Chromium 及其所有页面(如果页面被打开的话)。[Browser]对象本身被认为是处理过的并不能再被使用。

browser.createIncognitoBrowserContext()

  • returns: <[Promise]<[BrowserContext]>>

创建一个匿名的浏览器上下文。这将不会与其他浏览器上下文分享cookies/cache。

  1. const browser = await puppeteer.launch();
  2. // 创建一个匿名的浏览器上下文
  3. const context = await browser.createIncognitoBrowserContext();
  4. // 在一个原生的上下文中创建一个新页面
  5. const page = await context.newPage();
  6. // 做一些事情
  7. await page.goto('https://example.com');

browser.disconnect()

断开Puppeteer 和浏览器的连接,但Chromium 进程仍然在运行。在调用disconnect之后,[Browser]对象本身被认为是处理过的并不能再被使用。

browser.newPage()

  • returns: <[Promise]<[Page]>>

返回一个新的[Page]对象。[Page]在一个默认的浏览器上下文中被创建。

browser.pages()

  • returns: <[Promise]<[Array]<[Page]>>> 返回一个包含所有打开的页面的数组

  • returns: <?[ChildProcess]> 产生浏览器的进程。如果浏览器实例是由puppeteer.connect 方法创建的则返回null。

browser.targets()

  • returns: <[Array]<[Target]>>

浏览器内所有活动目标的数组。在多个浏览器上下文的情况下,该方法将返回一个包含所有浏览器上下文中的所有目标的数组。

browser.userAgent()

  • returns: <[Promise]<[string]>> 返回浏览器原始的user-agent

注意 页面可以使用page.setUserAgent 覆盖浏览器的user-agent

browser.version()

  • returns: <[Promise]<[string]>> 对于无头的 Chromium,这类似于 HeadlessChrome/61.0.3153.0. 对于非无头的Chromium, 这类似于 Chrome/61.0.3153.0。

注意 browser.version() 的格式可能在未来版本的Chromium中改变。

browser.wsEndpoint()

  • returns: <[string]> 返回浏览器websocket的地址

puppeteer.connect 可以将浏览器websocket端作为一个参数。其格式为ws://${host}:${port}/devtools/browser/<id>

你可以从http://${host}:${port}/json/version 找到webSocketDebuggerUrl 。了解更多有关devtools protocolbrowser endpoint