跳转到主要内容

BrowserContext

浏览器上下文 (BrowserContexts) 提供了一种操作多个独立浏览器会话的方式。

如果一个页面打开另一个页面,例如通过 window.open 调用,则弹出的页面将属于父页面的浏览器上下文。

Playwright 允许通过 browser.new_context() 方法创建隔离的非持久化浏览器上下文。非持久化浏览器上下文不会将任何浏览数据写入磁盘。

# create a new incognito browser context
context = browser.new_context()
# create a new page inside context.
page = context.new_page()
page.goto("https://example.com")
# dispose context once it is no longer needed.
context.close()

方法

add_cookies

v1.9 之前添加 browserContext.add_cookies

将 Cookie 添加到此浏览器上下文中。此上下文中的所有页面都将安装这些 Cookie。Cookie 可通过 browser_context.cookies() 获取。

用法

browser_context.add_cookies([cookie_object1, cookie_object2])

参数

  • cookies List[Dict]#
    • name str

    • value str

    • url str (可选)

      需要 urldomainpath。可选。

    • domain str (可选)

      要使 Cookie 也适用于所有子域名,请在域名后加上一个点,例如:".example.com"。需要 urldomainpath。可选。

    • path str (可选)

      需要 urldomainpath。可选。

    • expires float (可选)

      Unix 时间(秒)。可选。

    • httpOnly bool (可选)

      可选。

    • secure bool (可选)

      可选。

    • sameSite "Strict" | "Lax" | "None" (可选)

      可选。

    • partitionKey str (可选)

      对于分区第三方 cookie(又称 CHIPS),为分区键。可选。

返回


add_init_script

v1.9 之前添加 browserContext.add_init_script

添加一个脚本,该脚本将在以下情况之一中进行评估:

  • 每当在浏览器上下文中创建页面或导航页面时。
  • 每当在浏览器上下文中的任何页面中附加或导航子框架时。在这种情况下,脚本在新附加的框架的上下文中进行评估。

脚本在文档创建后但在任何脚本运行之前进行评估。这对于修改 JavaScript 环境非常有用,例如,为 Math.random 设置种子。

用法

在页面加载之前覆盖 Math.random 的示例

// preload.js
Math.random = () => 42;
# in your playwright script, assuming the preload.js file is in same directory.
browser_context.add_init_script(path="preload.js")
注意

通过 browser_context.add_init_script()page.add_init_script() 安装的多个脚本的执行顺序未定义。

参数

  • path Union[str, pathlib.Path] (可选)#

    JavaScript 文件的路径。如果 path 是相对路径,则它相对于当前工作目录解析。可选。

  • script str (可选)#

    将在浏览器上下文中的所有页面中执行的脚本。可选。

返回

  • [Disposable]#

clear_cookies

v1.9 之前添加 browserContext.clear_cookies

从上下文清除 cookie。接受可选的过滤器。

用法

context.clear_cookies()
context.clear_cookies(name="session-id")
context.clear_cookies(domain="my-origin.com")
context.clear_cookies(path="/api/v1")
context.clear_cookies(name="session-id", domain="my-origin.com")

参数

  • domain str | Pattern (可选)新增于: v1.43#

    只移除具有给定域的 cookie。

  • name str | Pattern (可选)新增于: v1.43#

    只移除具有给定名称的 cookie。

  • path str | Pattern (可选)新增于: v1.43#

    只移除具有给定路径的 cookie。

返回


clear_permissions

v1.9 之前添加 browserContext.clear_permissions

清除浏览器上下文的所有权限覆盖。

用法

context = browser.new_context()
context.grant_permissions(["clipboard-read"])
# do stuff ..
context.clear_permissions()

返回


close

v1.9 之前添加 browserContext.close

关闭浏览器上下文。所有属于该浏览器上下文的页面都将被关闭。

注意

默认的浏览器上下文不能被关闭。

用法

browser_context.close()
browser_context.close(**kwargs)

参数

  • reason str (可选)添加于:v1.40#

    报告给因上下文关闭而中断的操作的原因。

返回


cookies

v1.9 之前添加 browserContext.cookies

如果未指定 URL,此方法将返回所有 cookie。如果指定了 URL,则仅返回影响这些 URL 的 cookie。

用法

browser_context.cookies()
browser_context.cookies(**kwargs)

参数

  • urls str | List[str] (可选)#

    可选的 URL 列表。

返回

  • List[Dict]#
    • name str

    • value str

    • domain str

    • path str

    • expires float

      Unix 时间戳,单位为秒。

    • httpOnly bool

    • secure bool

    • sameSite "Strict" | "Lax" | "None"

    • partitionKey str (可选)


expect_console_message

新增于: v1.34 browserContext.expect_console_message

执行操作并等待上下文中页面记录 ConsoleMessage。如果提供了谓词(predicate),它会将 ConsoleMessage 值传入 predicate 函数,并等待 predicate(message) 返回真值。如果页面在 browser_context.on("console") 事件触发前关闭,则抛出错误。

用法

browser_context.expect_console_message()
browser_context.expect_console_message(**kwargs)

参数

返回


expect_event

v1.9 之前添加 browserContext.expect_event

等待事件触发并将该事件的值传入谓词函数。当谓词返回真值时返回。如果上下文在事件触发前关闭,则抛出错误。返回事件数据值。

用法

with context.expect_event("page") as event_info:
page.get_by_role("button").click()
page = event_info.value

参数

  • event str#

    事件名称,与传递给 browserContext.on(event) 的名称相同。

  • predicate Callable (可选)#

    接收事件数据,并在等待应该解决时解析为真值。

  • timeout float (可选)#

    最长等待时间(以毫秒为单位)。默认为 30000(30 秒)。传入 0 可禁用超时。默认值可以通过使用 browser_context.set_default_timeout() 进行更改。

返回


expect_page

添加于:v1.9 browserContext.expect_page

执行操作并等待上下文中创建新的 Page。如果提供了谓词,它会将 Page 值传入 predicate 函数,并等待 predicate(event) 返回真值。如果上下文在创建新 Page 前关闭,则抛出错误。

用法

browser_context.expect_page()
browser_context.expect_page(**kwargs)

参数

返回


expose_binding

v1.9 之前添加 browserContext.expose_binding

此方法在上下文中每个页面的每个框架的 window 对象上添加一个名为 name 的函数。调用时,该函数执行 callback 并返回一个 Promise,解析为 callback 的返回值。如果 callback 返回一个 Promise,它将被等待。

callback 函数的第一个参数包含调用者的信息:{ browserContext: BrowserContext, page: Page, frame: Frame }

请参阅 page.expose_binding() 了解仅限页面的版本。

用法

将页面 URL 公开给上下文中所有页面的所有框架的示例

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
context.expose_binding("pageURL", lambda source: source["page"].url)
page = context.new_page()
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.get_by_role("button").click()

with sync_playwright() as playwright:
run(playwright)

参数

  • name str#

    窗口对象上函数的名称。

  • callback Callable#

    将在 Playwright 上下文中调用的回调函数。

返回

  • [Disposable]#

expose_function

v1.9 之前添加 browserContext.expose_function

此方法在上下文中每个页面的每个框架的 window 对象上添加一个名为 name 的函数。调用时,该函数执行 callback 并返回一个 Promise,解析为 callback 的返回值。

如果 callback 返回一个 Promise,它将被等待。

请参阅 page.expose_function() 了解仅限页面的版本。

用法

向上下文中所有页面添加 sha256 函数的示例

import hashlib
from playwright.sync_api import sync_playwright

def sha256(text: str) -> str:
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()


def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
context.expose_function("sha256", sha256)
page = context.new_page()
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.get_by_role("button").click()

with sync_playwright() as playwright:
run(playwright)

参数

  • name str#

    窗口对象上函数的名称。

  • callback Callable#

    将在 Playwright 上下文中调用的回调函数。

返回

  • [Disposable]#

grant_permissions

v1.9 之前添加 browserContext.grant_permissions

授予浏览器上下文指定的权限。如果指定了来源,则仅授予给定来源相应的权限。

用法

browser_context.grant_permissions(permissions)
browser_context.grant_permissions(permissions, **kwargs)

参数

  • permissions List[str]#

    要授予的权限列表。

    危险

    不同浏览器之间,甚至相同浏览器的不同版本之间,支持的权限也不同。任何权限都可能在更新后停止工作。

    以下是一些可能受某些浏览器支持的权限:

    • 'accelerometer'
    • 'ambient-light-sensor'
    • 'background-sync'
    • 'camera'
    • 'clipboard-read'
    • 'clipboard-write'
    • 'geolocation'
    • 'gyroscope'
    • 'local-fonts'
    • 'local-network-access'
    • 'magnetometer'
    • 'microphone'
    • 'midi-sysex' (系统专属 midi)
    • 'midi'
    • 'notifications'
    • 'payment-handler'
    • 'storage-access'
    • 'screen-wake-lock'
  • origin str (可选)#

    授予权限的 源 (origin),例如 "https://example.com"。

返回


new_cdp_session

添加于:v1.11 browserContext.new_cdp_session
注意

CDP 会话仅在基于 Chromium 的浏览器上受支持。

返回新创建的会话。

用法

browser_context.new_cdp_session(page)

参数

  • page Page | Frame#

    要为其创建新会话的目标。为了向后兼容,此参数名为 page,但它可以是 PageFrame 类型。

返回


new_page

v1.9 之前添加 browserContext.new_page

在浏览器上下文中创建新页面。

用法

browser_context.new_page()

返回


route

v1.9 之前添加 browserContext.route

路由提供了修改浏览器上下文中任何页面发出的网络请求的能力。一旦启用路由,每个匹配 URL 模式的请求都将暂停,除非它被继续、完成或中止。

注意

browser_context.route() 不会拦截由 Service Worker 拦截的请求。请参阅问题。使用请求拦截时,我们建议通过将 service_workers 设置为 'block' 来禁用 Service Worker。

用法

一个简单地中止所有图片请求的处理程序示例

context = browser.new_context()
page = context.new_page()
context.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
page.goto("https://example.com")
browser.close()

或者使用正则表达式模式的相同片段

context = browser.new_context()
page = context.new_page()
context.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
page = await context.new_page()
page = context.new_page()
page.goto("https://example.com")
browser.close()

可以检查请求以决定路由操作。例如,模拟所有包含某些 POST 数据的请求,并保留所有其他请求不变

def handle_route(route: Route):
if ("my-string" in route.request.post_data):
route.fulfill(body="mocked-data")
else:
route.continue_()
context.route("/api/**", handle_route)

当请求同时匹配多个处理程序时,页面路由(通过 page.route() 设置)优先于浏览器上下文路由。

要删除具有处理程序的路由,可以使用 browser_context.unroute()

注意

启用路由会禁用 HTTP 缓存。

参数

  • url str | Pattern | Callable[URL]:bool#

    匹配路由期间的 glob 模式、正则表达式模式或接收 URL 的谓词。如果在上下文选项中设置了 base_url 且提供的 URL 是一个不以 * 开头的字符串,则它将使用 new URL() 构造函数解析。

  • handler Callable[Route, Request]:Promise[Any] | Any#

    用于路由请求的处理函数。

  • times int (可选)新增于: v1.15#

    路由应该被使用多少次。默认情况下,每次都会使用。

返回

  • [Disposable]#

route_from_har

添加于:v1.23 browserContext.route_from_har

如果指定,上下文中发出的网络请求将从 HAR 文件中提供。了解更多关于从 HAR 重放的信息。

Playwright 不会从 HAR 文件中提供由 Service Worker 拦截的请求。请参阅问题。使用请求拦截时,我们建议通过将 service_workers 设置为 'block' 来禁用 Service Worker。

用法

browser_context.route_from_har(har)
browser_context.route_from_har(har, **kwargs)

参数

  • har Union[str, pathlib.Path]#

    包含预录制网络数据的 HAR 文件的路径。如果 path 是相对路径,则它会相对于当前工作目录进行解析。

  • not_found "abort" | "fallback" (可选)#

    • 如果设置为 'abort',则 HAR 文件中未找到的任何请求都将被中止。
    • 如果设置为 'fallback',则会退回到处理程序链中的下一个路由处理程序。

    默认为中止。

  • update bool (可选)#

    如果指定,则使用实际网络信息更新给定的 HAR,而不是从文件提供。文件将在调用 browser_context.close() 时写入磁盘。

  • update_content "embed" | "attach" (可选)新增于: v1.32#

    可选设置以控制资源内容管理。如果指定 attach,资源将作为单独的文件或 ZIP 档案中的条目持久化。如果指定 embed,内容将内联存储在 HAR 文件中。

  • update_mode "full" | "minimal" (可选)新增于: v1.32#

    当设置为 minimal 时,仅记录从 HAR 路由所需的信息。这会省略 HAR 信息中不用于从 HAR 重放的大小、时间、页面、cookie、安全性和其他类型的信息。默认为 minimal

  • url str | Pattern (可选)#

    一个 glob 模式、正则表达式或谓词,用于匹配请求 URL。只有 URL 匹配模式的请求将从 HAR 文件中提供。如果未指定,所有请求都将从 HAR 文件中提供。

返回


route_web_socket

新增于: v1.48 browserContext.route_web_socket

此方法允许修改浏览器上下文中任何页面进行的 WebSocket 连接。

请注意,只有在此方法调用后创建的 WebSocket 才会路由。建议在创建任何页面之前调用此方法。

用法

以下是一个拦截 websocket 消息的简单处理程序示例。有关更多详细信息和示例,请参阅 WebSocketRoute

def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "to-be-blocked":
return
ws.send(message)

def handler(ws: WebSocketRoute):
ws.route_send(lambda message: message_handler(ws, message))
ws.connect()

context.route_web_socket("/ws", handler)

参数

返回


set_default_navigation_timeout

v1.9 之前添加 browserContext.set_default_navigation_timeout

此设置将更改以下方法和相关快捷方式的默认最大导航时间

用法

browser_context.set_default_navigation_timeout(timeout)

参数

  • timeout float#

    最大导航时间(毫秒)


set_default_timeout

v1.9 之前添加 browserContext.set_default_timeout

此设置将更改所有接受 timeout 选项的方法的默认最大时间。

用法

browser_context.set_default_timeout(timeout)

参数

  • timeout float#

    最大时间(毫秒)。传入 0 禁用超时。


set_extra_http_headers

v1.9 之前添加 browserContext.set_extra_http_headers

额外的 HTTP 标头将随上下文中任何页面发起的每个请求一起发送。这些标头与通过 page.set_extra_http_headers() 设置的页面特定额外 HTTP 标头合并。如果页面覆盖了特定标头,则将使用页面特定的标头值,而不是浏览器上下文标头值。

注意

browser_context.set_extra_http_headers() 不保证传出请求中标头的顺序。

用法

browser_context.set_extra_http_headers(headers)

参数

  • headers Dict[str, str]#

    一个包含要随每个请求发送的额外 HTTP 标头的对象。所有标头值必须是字符串。

返回


set_geolocation

v1.9 之前添加 browserContext.set_geolocation

设置上下文的地理位置。传入 nullundefined 模拟位置不可用。

用法

browser_context.set_geolocation({"latitude": 59.95, "longitude": 30.31667})
注意

考虑使用 browser_context.grant_permissions() 来授予浏览器上下文页面读取其地理位置的权限。

参数

  • geolocation NoneType | Dict#
    • latitude float

      纬度,介于 -90 和 90 之间。

    • longitude float

      经度,介于 -180 和 180 之间。

    • accuracy float (可选)

      非负精度值。默认为 0

返回


set_offline

v1.9 之前添加 browserContext.set_offline

用法

browser_context.set_offline(offline)

参数

  • offline bool#

    是否为浏览器上下文模拟离线网络。

返回


set_storage_state

新增于: v1.59 browserContext.set_storage_state

清除所有源的现有 Cookie、本地存储和 IndexedDB 条目,并设置新的存储状态。

用法

# Load storage state from a file and apply it to the context.
context.set_storage_state("state.json")

参数

  • storage_state Union[str, pathlib.Path] | Dict#

    • cookies List[Dict]

      • name str

      • value str

      • domain str

        域名和路径是必需的。要使 cookie 也适用于所有子域,请在域名前面加上一个点,例如:".example.com"

      • path str

        域名和路径是必需的

      • expires float

        Unix 时间戳,单位为秒。

      • httpOnly bool

      • secure bool

      • sameSite "Strict" | "Lax" | "None"

        sameSite 标志

      为上下文设置的 Cookie

    • origins List[Dict]

      • origin str

      • localStorage List[Dict]

        为上下文设置的 localStorage

    了解更多关于存储状态和身份验证的信息。

    使用给定的存储状态填充上下文。此选项可用于使用通过 browser_context.storage_state() 获得的登录信息来初始化上下文。

返回


storage_state

v1.9 之前添加 browserContext.storage_state

返回此浏览器上下文的存储状态,包含当前 cookie、本地存储快照和 IndexedDB 快照。

用法

browser_context.storage_state()
browser_context.storage_state(**kwargs)

参数

  • indexed_db bool (可选)添加于: v1.51#

    设置为 true 以在存储状态快照中包含 IndexedDB。如果您的应用程序使用 IndexedDB 存储身份验证令牌(如 Firebase Authentication),请启用此项。

  • path Union[str, pathlib.Path] (可选)#

    用于保存存储状态的文件路径。如果 path 是相对路径,则它会相对于当前工作目录解析。如果未提供路径,存储状态仍会返回,但不会保存到磁盘。

返回


unroute

v1.9 之前添加 browserContext.unroute

删除使用 browser_context.route() 创建的路由。当未指定 handler 时,删除 url 的所有路由。

用法

browser_context.unroute(url)
browser_context.unroute(url, **kwargs)

参数

返回


unroute_all

新增于: v1.41 browserContext.unroute_all

删除使用 browser_context.route()browser_context.route_from_har() 创建的所有路由。

用法

browser_context.unroute_all()
browser_context.unroute_all(**kwargs)

参数

  • behavior "wait" | "ignoreErrors" | "default" (可选)#

    指定是否等待已运行的处理程序以及如果它们抛出错误该怎么做

    • 'default' - 不等待当前处理程序调用 (如果有) 完成,如果未路由的处理程序抛出错误,可能会导致未处理的错误
    • 'wait' - 等待当前处理程序调用 (如果有) 完成
    • 'ignoreErrors' - 不等待当前处理程序调用 (如果有) 完成,取消路由后处理程序抛出的所有错误都将被静默捕获

返回


wait_for_event

v1.9 之前添加 browserContext.wait_for_event
注意

在大多数情况下,您应该使用 browser_context.expect_event()

等待给定的 event 触发。如果提供了谓词,它会将事件的值传入 predicate 函数,并等待 predicate(event) 返回真值。如果浏览器上下文在 event 触发前关闭,则抛出错误。

用法

browser_context.wait_for_event(event)
browser_context.wait_for_event(event, **kwargs)

参数

  • event str#

    事件名称,通常传递给 *.on(event) 的相同名称。

  • predicate Callable (可选)#

    接收事件数据,并在等待应该解决时解析为真值。

  • timeout float (可选)#

    最长等待时间(以毫秒为单位)。默认为 30000(30 秒)。传入 0 可禁用超时。默认值可以通过使用 browser_context.set_default_timeout() 进行更改。

返回


属性

browser

v1.9 之前添加 browserContext.browser

获取拥有该上下文的浏览器实例。如果该上下文在正常浏览器之外创建(例如 Android 或 Electron),则返回 null

用法

browser_context.browser

返回


clock

新增于: v1.45 browserContext.clock

Playwright 能够模拟时钟和时间流逝。

用法

browser_context.clock

类型


credentials

添加于:v1.61 browserContext.credentials

此上下文的虚拟 WebAuthn 身份验证器。允许测试注入凭据并拦截 navigator.credentials.create() / navigator.credentials.get() 流程。

用法

browser_context.credentials

类型


debugger

新增于: v1.59 browserContext.debugger

调试器允许暂停和恢复执行。

用法

browser_context.debugger

类型


is_closed

新增于: v1.59 browserContext.is_closed

表明浏览器上下文正在关闭或已经关闭。

用法

browser_context.is_closed()

返回


pages

v1.9 之前添加 browserContext.pages

返回上下文中所有打开的页面。

用法

browser_context.pages

返回


request

添加于:v1.16 browserContext.request

与此上下文关联的 API 测试助手。使用此 API 发出的请求将使用上下文 cookie。

用法

browser_context.request

类型


service_workers

添加于:v1.11 browserContext.service_workers
注意

Service workers 仅在基于 Chromium 的浏览器中受支持。

上下文中所有现有的 Service Worker。

用法

browser_context.service_workers

返回


tracing

添加于:v1.12 browserContext.tracing

用法

browser_context.tracing

类型


Events

on("close")

v1.9 之前添加 browserContext.on("close")

当浏览器上下文关闭时触发。这可能由于以下原因之一发生:

  • 浏览器上下文已关闭。
  • 浏览器应用程序已关闭或崩溃。
  • 调用了 browser.close() 方法。

用法

browser_context.on("close", handler)

事件数据


on("console")

新增于: v1.34 browserContext.on("console")

当页面中的 JavaScript 调用其中一个 console API 方法(例如 console.logconsole.dir)时触发。

传递给 console.log 的参数和页面可在 ConsoleMessage 事件处理程序参数中获取。

用法

def print_args(msg):
for arg in msg.args:
print(arg.json_value())

context.on("console", print_args)
page.evaluate("console.log('hello', 5, { foo: 'bar' })")

事件数据


on("dialog")

新增于: v1.34 browserContext.on("dialog")

当 JavaScript 对话框(例如 alertpromptconfirmbeforeunload)出现时触发。侦听器必须 dialog.accept()dialog.dismiss() 对话框 - 否则页面将冻结等待对话框,并且像点击这样的操作将永远不会完成。

用法

context.on("dialog", lambda dialog: dialog.accept())
注意

当不存在 page.on("dialog")browser_context.on("dialog") 侦听器时,所有对话框都会自动关闭。

事件数据


on("download")

添加于: v1.60 browserContext.on("download")

当属于此上下文的任何页面开始附件下载时触发。用户可以通过传入的 Download 实例访问下载内容的各种基本文件操作。另请参阅 page.on("download") 以接收有关特定页面的事件。

用法

browser_context.on("download", handler)

事件数据


on("frameattached")

添加于: v1.60 browserContext.on("frameattached")

当属于此上下文的任何页面中附加框架时触发。另请参阅 page.on("frameattached") 以接收有关特定页面的事件。

用法

browser_context.on("frameattached", handler)

事件数据


on("framedetached")

添加于: v1.60 browserContext.on("framedetached")

当属于此上下文的任何页面中分离框架时触发。另请参阅 page.on("framedetached") 以接收有关特定页面的事件。

用法

browser_context.on("framedetached", handler)

事件数据


on("framenavigated")

添加于: v1.60 browserContext.on("framenavigated")

当属于此上下文的任何页面中的框架导航到新 URL 时触发。另请参阅 page.on("framenavigated") 以接收有关特定页面导航的事件。

用法

browser_context.on("framenavigated", handler)

事件数据


on("page")

v1.9 之前添加 browserContext.on("page")

当在 BrowserContext 中创建新页面时,触发此事件。页面可能仍在加载。此事件也将为弹出窗口页面触发。另请参阅 page.on("popup") 以接收有关与特定页面相关的弹出窗口的事件。

页面可用的最早时刻是它导航到初始 URL 时。例如,使用 window.open('http://example.com') 打开弹出窗口时,当对 "http://example.com" 的网络请求完成且其响应已开始在弹出窗口中加载时,此事件将触发。如果您想路由/侦听此网络请求,请分别使用 browser_context.route()browser_context.on("request"),而不是 Page 上的类似方法。

with context.expect_page() as page_info:
page.get_by_text("open new page").click(),
page = page_info.value
print(page.evaluate("location.href"))
注意

使用 page.wait_for_load_state() 等待页面达到特定状态(在大多数情况下您不需要它)。

用法

browser_context.on("page", handler)

事件数据


on("pageclose")

添加于: v1.60 browserContext.on("pageclose")

当此上下文中的页面关闭时触发。另请参阅 page.on("close") 以接收有关特定页面的事件。

用法

browser_context.on("pageclose", handler)

事件数据


on("pageload")

添加于: v1.60 browserContext.on("pageload")

当 JavaScript load 事件在属于此上下文的任何页面中分派时触发。另请参阅 page.on("load") 以接收有关特定页面的事件。

用法

browser_context.on("pageload", handler)

事件数据


on("request")

添加于:v1.12 browserContext.on("request")

当通过此上下文创建的任何页面发出请求时触发。request 对象是只读的。要仅侦听来自特定页面的请求,请使用 page.on("request")

要拦截和更改请求,请参阅 browser_context.route()page.route()

用法

browser_context.on("request", handler)

事件数据


on("requestfailed")

添加于:v1.12 browserContext.on("requestfailed")

当请求失败(例如超时)时触发。要仅侦听来自特定页面的失败请求,请使用 page.on("requestfailed")

注意

HTTP 错误响应(例如 404 或 503)从 HTTP 角度来看仍然是成功的响应,因此请求将通过 browser_context.on("requestfinished") 事件完成,而不是通过 browser_context.on("requestfailed")

用法

browser_context.on("requestfailed", handler)

事件数据


on("requestfinished")

添加于:v1.12 browserContext.on("requestfinished")

当请求在下载响应正文后成功完成时触发。对于成功的响应,事件序列为 requestresponserequestfinished。要侦听来自特定页面的成功请求,请使用 page.on("requestfinished")

用法

browser_context.on("requestfinished", handler)

事件数据


on("response")

添加于:v1.12 browserContext.on("response")

当收到请求的 response 状态和标头时触发。对于成功的响应,事件序列为 requestresponserequestfinished。要侦听来自特定页面的响应事件,请使用 page.on("response")

用法

browser_context.on("response", handler)

事件数据


on("serviceworker")

添加于:v1.11 browserContext.on("serviceworker")
注意

Service workers 仅在基于 Chromium 的浏览器中受支持。

当在上下文中创建新的 Service Worker 时触发。

用法

browser_context.on("serviceworker", handler)

事件数据


on("weberror")

新增于: v1.38 browserContext.on("weberror")

当此上下文中的任何页面中出现未处理的异常时触发。要侦听来自特定页面的错误,请改用 page.on("pageerror")

用法

browser_context.on("weberror", handler)

事件数据


已弃用

on("backgroundpage")

添加于:v1.11 browserContext.on("backgroundpage")
已弃用

后台页面已从 Chromium 与 Manifest V2 扩展一起移除。

不触发此事件。

用法

browser_context.on("backgroundpage", handler)

事件数据


background_pages

添加于:v1.11 browserContext.background_pages
已弃用

后台页面已从 Chromium 与 Manifest V2 扩展一起移除。

返回一个空列表。

用法

browser_context.background_pages

返回