企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 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。