class: BrowserContext
- 扩展: EventEmitter
BrowserContext 提供了一种操作多个独立浏览器会话的方法。启动浏览器时,它具有默认情况下使用单个 BrowserContext 。方法browser.newPage()
在默认浏览器上下文中创建一个页面。
如果某个页面打开另一个页面,例如通过window.open
调用,弹出窗口将属于父页面的浏览器上下文。
Puppeteer 允许使用browser.createIncognitoBrowserContext()
方法创建;「 隐身 」浏览器上下文。「隐身」浏览器上下文不会将任何浏览数据写入磁盘。
// 创建一个新的隐身浏览器上下文
const context = await browser.createIncognitoBrowserContext();
// 在上下文中创建一个新页面。
const page = await context.newPage();
// ...对页面进行处理...
await page.goto('https://example.com');
// 不再需要上下文时,将其销毁。
await context.close();
event: 'targetchanged'
- <[Target]>
当浏览器上下文中的目标的url更改时触发。
event: 'targetcreated'
- <[Target]>
当在浏览器上下文中创建新目标时触发,例如,当通过window.open
或browserContext.newPage
打开新页面时触发。
event: 'targetdestroyed'
- <[Target]>
当浏览器上下文中的目标被销毁(例如,页面关闭)时触发。
browserContext.browser()
- returns: <[Browser]>
该浏览器上下文所属的浏览器。
browserContext.clearPermissionOverrides()
- returns: <[Promise]>
清除浏览器上下文的所有权限替代。
const context = browser.defaultBrowserContext();
context.overridePermissions('https://example.com', ['clipboard-read']);
// 处理 ...
context.clearPermissionOverrides();
browserContext.close()
- returns: <[Promise]>
关闭浏览器上下文。属于浏览器上下文的所有目标将被关闭。
注意仅隐身浏览器上下文可以关闭。
browserContext.isIncognito()
- returns: <[boolean]>
返回 BrowserContext 是否隐身。
默认浏览器上下文是唯一的非隐身浏览器上下文。
注意,无法关闭默认浏览器上下文。
browserContext.newPage()
- returns: <[Promise]<[Page]>>
在浏览器上下文中创建一个新页面。
browserContext.overridePermissions(origin, permissions)
origin
<[string]> 授予权限的 [origin] ,例如「 example.com」。permissions
<[Array]<[string]>> 授予权限的数组。此处未列出的所有权限将被自动拒绝。权限可以是以下值之一:地理位置(geolocation)
midi
系统专有的Midi (midi-sysex)
通知(notifications)
推送(push)
摄像头(camera)
话筒(microphone)
后台同步(background-sync)
环境光传感器(ambient-light-sensor)
加速度计(accelerometer)
陀螺仪(gyroscope)
磁力仪(magnetometer)
可访问性事件(accessibility-events)
剪贴板读取(clipboard-read)
剪贴板写入(clipboard-write)
付款处理程序(payment-handler)
- returns: <[Promise]>
const context = browser.defaultBrowserContext();
await context.overridePermissions('https://html5demos.com', ['geolocation']);
browserContext.pages()
- returns: <[Promise]<[Array]<[Page]>>> 解析为所有打开的页面数组的 Promise 。不可见的页面,例如
「 background_page」
,将不在此列出,您可以使用 target.page() 找到它们。
浏览器上下文中所有页面数组。
browserContext.targets()
- returns: <[Array]<[Target]>>
浏览器上下文中所有活动目标数组。
browserContext.waitForTarget(predicate[, options])
predicate
<[function]([Target]):[boolean]> 为每个目标运行的函数options
<[Object]>timeout
<[number]> 最大等待时间,以毫秒为单位。传递0
以禁用超时。默认为 30 秒。
- returns: <[Promise]<[Target]>> 解析为找到的第一个与
predicate
函数匹配目标的 Promise 。
这将在此特定浏览器上下文中搜索目标。
查找通过window.open
打开的页面的目标的示例:
await page.evaluate(() => window.open('https://www.example.com/'));
const newWindowTarget = await browserContext.waitForTarget(target => target.url() === 'https://www.example.com/');
BrowserContext 提供了一种操作多个独立浏览器会话的方法。启动浏览器时,默认情况下使用的单个 BrowserContext 。browser.newPage()
方法在默认浏览器上下文中创建一个页面。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。