Перейти к основному содержимому

BrowserContext

BrowserContexts provide a way to operate multiple independent browser sessions.

If a page opens another page, e.g. with a window.open call, the popup will belong to the parent page's browser context.

Playwright allows creating isolated non-persistent browser contexts with browser.new_context() method. Non-persistent browser contexts don't write any browsing data to disk.

# 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()

Methods

add_cookies

Added before v1.9 browserContext.add_cookies

Adds cookies into this browser context. All pages within this context will have these cookies installed. Cookies can be obtained via browser_context.cookies().

Использование

browser_context.add_cookies([cookie_object1, cookie_object2])

Аргументы

  • cookies List[Dict]#
    • name str

    • value str

    • url str (optional)

      Either url or domain / path are required. Optional.

    • domain str (optional)

      For the cookie to apply to all subdomains as well, prefix domain with a dot, like this: ".example.com". Either url or domain / path are required. Optional.

    • path str (optional)

      Either url or domain / path are required Optional.

    • expires float (optional)

      Unix time in seconds. Optional.

    • httpOnly bool (optional)

      Optional.

    • secure bool (optional)

      Optional.

    • sameSite "Strict" | "Lax" | "None" (optional)

      Optional.

Возвращает


add_init_script

Added before v1.9 browserContext.add_init_script

Adds a script which would be evaluated in one of the following scenarios:

  • Whenever a page is created in the browser context or is navigated.
  • Whenever a child frame is attached or navigated in any page in the browser context. In this case, the script is evaluated in the context of the newly attached frame.

The script is evaluated after the document was created but before any of its scripts were run. This is useful to amend the JavaScript environment, e.g. to seed Math.random.

Использование

An example of overriding Math.random before the page loads:

// 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")
примечание

The order of evaluation of multiple scripts installed via browser_context.add_init_script() and page.add_init_script() is not defined.

Аргументы

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

    Path to the JavaScript file. If path is a relative path, then it is resolved relative to the current working directory. Optional.

  • script str (optional)#

    Script to be evaluated in all pages in the browser context. Optional.

Возвращает


clear_cookies

Added before v1.9 browserContext.clear_cookies

Removes cookies from context. Accepts optional filter.

Использование

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 (optional) Added in: v1.43#

    Only removes cookies with the given domain.

  • name str | Pattern (optional) Added in: v1.43#

    Only removes cookies with the given name.

  • path str | Pattern (optional) Added in: v1.43#

    Only removes cookies with the given path.

Возвращает


clear_permissions

Added before v1.9 browserContext.clear_permissions

Clears all permission overrides for the browser context.

Использование

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

Возвращает


close

Added before v1.9 browserContext.close

Closes the browser context. All the pages that belong to the browser context will be closed.

примечание

The default browser context cannot be closed.

Использование

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

Аргументы

  • reason str (optional) Added in: v1.40#

    The reason to be reported to the operations interrupted by the context closure.

Возвращает


cookies

Added before v1.9 browserContext.cookies

If no URLs are specified, this method returns all cookies. If URLs are specified, only cookies that affect those URLs are returned.

Использование

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

Аргументы

  • urls str | List[str] (optional)#

    Optional list of URLs.

Возвращает


expect_console_message

Added in: v1.34 browserContext.expect_console_message

Performs action and waits for a ConsoleMessage to be logged by in the pages in the context. If predicate is provided, it passes ConsoleMessage value into the predicate function and waits for predicate(message) to return a truthy value. Will throw an error if the page is closed before the browser_context.on("console") event is fired.

Использование

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

Аргументы

Возвращает


expect_event

Added before v1.9 browserContext.expect_event

Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy value. Will throw an error if the context closes before the event is fired. Returns the event data value.

Использование

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

Аргументы

  • event str#

    Event name, same one would pass into browserContext.on(event).

  • predicate Callable (optional)#

    Receives the event data and resolves to truthy value when the waiting should resolve.

  • timeout float (optional)#

    Maximum time to wait for in milliseconds. Defaults to 30000 (30 seconds). Pass 0 to disable timeout. The default value can be changed by using the 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)

Аргументы

  • predicate Callable[Page]:bool (опционально)#

    Получает объект Page и разрешает в истинное значение, когда ожидание должно разрешиться.

  • timeout float (опционально)#

    Максимальное время ожидания в миллисекундах. По умолчанию 30000 (30 секунд). Передайте 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя browser_context.set_default_timeout().

Возвращает


expose_binding

Добавлено до v1.9 browserContext.expose_binding

Метод добавляет функцию с именем name в объект window каждого фрейма на каждой странице в контексте. При вызове функция выполняет 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#

    Имя функции в объекте window.

  • callback Callable#

    Функция обратного вызова, которая будет вызвана в контексте Playwright.

  • handle bool (опционально)#

    Устарело

    Эта опция будет удалена в будущем.

    Передавать ли аргумент как handle, вместо передачи по значению. При передаче handle поддерживается только один аргумент. При передаче по значению поддерживается несколько аргументов.

Возвращает


expose_function

Добавлено до v1.9 browserContext.expose_function

Метод добавляет функцию с именем name в объект window каждого фрейма на каждой странице в контексте. При вызове функция выполняет 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#

    Имя функции в объекте window.

  • callback Callable#

    Функция обратного вызова, которая будет вызвана в контексте Playwright.

Возвращает


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'
    • 'magnetometer'
    • 'microphone'
    • 'midi-sysex' (системно-эксклюзивный midi)
    • 'midi'
    • 'notifications'
    • 'payment-handler'
    • 'storage-access'
  • origin str (опционально)#

    [Источник], для которого предоставляются разрешения, например, "https://example.com".

Возвращает


new_cdp_session

Добавлено в: v1.11 browserContext.new_cdp_session
примечание

CDP сессии поддерживаются только в браузерах на основе Chromium.

Возвращает вновь созданную сессию.

Использование

browser_context.new_cdp_session(page)

Аргументы

  • page Page | Frame#

    Цель для создания новой сессии. Для обратной совместимости этот параметр называется page, но он может быть типа Page или Frame.

Возвращает


new_page

Добавлено до v1.9 browserContext.new_page

Создает новую страницу в контексте браузера.

Использование

browser_context.new_page()

Возвращает


route

Добавлено до v1.9 browserContext.route

Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются любой страницей в контексте браузера. Как только маршрут включен, каждый запрос, соответствующий шаблону URL, будет приостановлен, если он не будет продолжен, выполнен или прерван.

примечание

browser_context.route() не будет перехватывать запросы, перехваченные Service Worker. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив service_workers в 'block'.

Использование

Пример наивного обработчика, который прерывает все запросы изображений:

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#

    Глобальный шаблон, шаблон регулярного выражения или предикат, получающий URL для сопоставления при маршрутизации. Когда base_url через параметры контекста был предоставлен и переданный URL является путем, он объединяется через new URL() конструктор.

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

    функция-обработчик для маршрутизации запроса.

  • times int (опционально) Добавлено в: v1.15#

    Как часто маршрут должен использоваться. По умолчанию он будет использоваться каждый раз.

Возвращает


route_from_har

Added in: v1.23 browserContext.route_from_har

Если указано, сетевые запросы, сделанные в контексте, будут обслуживаться из HAR файла. Подробнее читайте в разделе Воспроизведение из HAR.

Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив service_workers в 'block'.

Использование

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" (опционально) Added in: v1.32#

    Опциональная настройка для управления содержимым ресурсов. Если указано attach, ресурсы сохраняются как отдельные файлы или записи в ZIP архиве. Если указано embed, содержимое сохраняется встраиваемым в HAR файл.

  • update_mode "full" | "minimal" (опционально) Added in: v1.32#

    Когда установлено в minimal, записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, время, страницы, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчанию minimal.

  • url str | Pattern (опционально)#

    Глобальный шаблон, регулярное выражение или предикат для сопоставления URL запроса. Только запросы с URL, соответствующим шаблону, будут обслуживаться из HAR файла. Если не указано, все запросы обслуживаются из HAR файла.

Возвращает


route_web_socket

Added in: 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)

Аргументы

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

    Только WebSocket с URL, соответствующим этому шаблону, будут маршрутизироваться. Строковый шаблон может быть относительным к base_url опции контекста.

  • handler Callable[WebSocketRoute]:Promise[Any] | Any#

    Функция-обработчик для маршрутизации WebSocket.

Возвращает


set_default_navigation_timeout

Added before v1.9 browserContext.set_default_navigation_timeout

Эта настройка изменит максимальное время навигации по умолчанию для следующих методов и связанных с ними ярлыков:

Использование

browser_context.set_default_navigation_timeout(timeout)

Аргументы

  • timeout float#

    Максимальное время навигации в миллисекундах


set_default_timeout

Added before v1.9 browserContext.set_default_timeout

Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих опцию timeout.

Использование

browser_context.set_default_timeout(timeout)

Аргументы

  • timeout float#

    Максимальное время в миллисекундах. Передайте 0, чтобы отключить тайм-аут.


set_extra_http_headers

Added before v1.9 browserContext.set_extra_http_headers

Дополнительные HTTP заголовки будут отправляться с каждым запросом, инициированным любой страницей в контексте. Эти заголовки объединяются с дополнительными HTTP заголовками, установленными для страницы с помощью page.set_extra_http_headers(). Если страница переопределяет определенный заголовок, будет использоваться значение заголовка, специфичное для страницы, вместо значения заголовка контекста браузера.

примечание

browser_context.set_extra_http_headers() не гарантирует порядок заголовков в исходящих запросах.

Использование

browser_context.set_extra_http_headers(headers)

Аргументы

  • headers Dict[str, str]#

    Объект, содержащий дополнительные HTTP заголовки, которые будут отправляться с каждым запросом. Все значения заголовков должны быть строками.

Возвращает


set_geolocation

Added before v1.9 browserContext.set_geolocation

Устанавливает геолокацию контекста. Передача null или undefined эмулирует недоступность позиции.

Использование

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

Added before v1.9 browserContext.set_offline

Использование

browser_context.set_offline(offline)

Аргументы

  • offline bool#

    Эмулировать ли отключение сети для контекста браузера.

Возвращает


storage_state

Added before v1.9 browserContext.storage_state

Возвращает состояние хранилища для этого контекста браузера, содержит текущие куки, снимок локального хранилища и снимок IndexedDB.

Использование

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

Аргументы

  • indexed_db bool (опционально) Added in: v1.51#

    Установите в true, чтобы включить IndexedDB в снимок состояния хранилища. Если ваше приложение использует IndexedDB для хранения токенов аутентификации, таких как Firebase Authentication, включите это.

    примечание

    IndexedDB с типизированными массивами в настоящее время не поддерживаются.

  • path Union[str, pathlib.Path] (опционально)#

    Путь к файлу для сохранения состояния хранилища. Если path является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, состояние хранилища все равно возвращается, но не будет сохранено на диск.

Возвращает


unroute

Added before v1.9 browserContext.unroute

Удаляет маршрут, созданный с помощью browser_context.route(). Когда handler не указан, удаляет все маршруты для url.

Использование

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

Аргументы

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

    Глобальный шаблон, шаблон регулярного выражения или предикат, получающий URL, использованный для регистрации маршрутизации с browser_context.route().

  • handler Callable[Route, Request]:Promise[Any] | Any (опционально)#

    Опциональная функция-обработчик, использованная для регистрации маршрутизации с browser_context.route().

Возвращает


unroute_all

Added in: 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

Added before 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().

Возвращает


Properties

background_pages

Added in: v1.11 browserContext.background_pages
примечание

Background pages are only supported on Chromium-based browsers.

Все существующие фоновые страницы в контексте.

Использование

browser_context.background_pages

Возвращает


browser

Added before v1.9 browserContext.browser

Возвращает экземпляр браузера для данного контекста. Если он был запущен как постоянный контекст, возвращается null.

Использование

browser_context.browser

Возвращает


clock

Added in: v1.45 browserContext.clock

Playwright имеет возможность имитировать часы и ход времени.

Использование

browser_context.clock

Type


pages

Added before v1.9 browserContext.pages

Возвращает все открытые страницы в контексте.

Использование

browser_context.pages

Возвращает


request

Added in: v1.16 browserContext.request

Помощник для тестирования API, связанный с этим контекстом. Запросы, сделанные с помощью этого API, будут использовать куки контекста.

Использование

browser_context.request

Type


service_workers

Added in: v1.11 browserContext.service_workers
примечание

Service workers are only supported on Chromium-based browsers.

Все существующие service workers в контексте.

Использование

browser_context.service_workers

Возвращает


tracing

Added in: v1.12 browserContext.tracing

Использование

browser_context.tracing

Type


Events

on("backgroundpage")

Added in: v1.11 browserContext.on("backgroundpage")
примечание

Only works with Chromium browser's persistent context.

Вызывается, когда в контексте создается новая фоновая страница.

background_page = context.wait_for_event("backgroundpage")

Использование

browser_context.on("backgroundpage", handler)

Данные события


on("close")

Added before v1.9 browserContext.on("close")

Вызывается, когда контекст браузера закрывается. Это может произойти по одной из следующих причин:

  • Контекст браузера закрыт.
  • Приложение браузера закрыто или аварийно завершило работу.
  • Метод browser.close() был вызван.

Использование

browser_context.on("close", handler)

Данные события


on("console")

Added in: v1.34 browserContext.on("console")

Вызывается, когда JavaScript на странице вызывает один из методов консоли API, например, console.log или console.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")

Added in: v1.34 browserContext.on("dialog")

Вызывается, когда появляется JavaScript-диалог, такой как alert, prompt, confirm или beforeunload. Слушатель должен либо dialog.accept(), либо dialog.dismiss() диалог - в противном случае страница заморозится, ожидая диалог, и действия, такие как клик, никогда не завершатся.

Использование

context.on("dialog", lambda dialog: dialog.accept())
примечание

Когда нет слушателей page.on("dialog") или browser_context.on("dialog"), все диалоги автоматически отклоняются.

Данные события


on("page")

Added before 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("request")

Added in: v1.12 browserContext.on("request")

Вызывается, когда запрос отправляется с любой страницы, созданной через этот контекст. Объект request доступен только для чтения. Чтобы слушать только запросы с определенной страницы, используйте page.on("request").

Для перехвата и изменения запросов, см. browser_context.route() или page.route().

Использование

browser_context.on("request", handler)

Данные события


on("requestfailed")

Added in: 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")

Added in: v1.12 browserContext.on("requestfinished")

Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request, response и requestfinished. Чтобы слушать успешные запросы с определенной страницы, используйте page.on("requestfinished").

Использование

browser_context.on("requestfinished", handler)

Данные события


on("response")

Added in: v1.12 browserContext.on("response")

Вызывается, когда response статус и заголовки получены для запроса. Для успешного ответа последовательность событий: request, response и requestfinished. Чтобы слушать события ответа с определенной страницы, используйте page.on("response").

Использование

browser_context.on("response", handler)

Данные события


on("serviceworker")

Added in: v1.11 browserContext.on("serviceworker")
примечание

Service workers are only supported on Chromium-based browsers.

Вызывается, когда в контексте создается новый service worker.

Использование

browser_context.on("serviceworker", handler)

Данные события


on("weberror")

Добавлено в: v1.38 browserContext.on("weberror")

Вызывается, когда исключение не обработано ни на одной из страниц в этом контексте. Чтобы отслеживать ошибки на конкретной странице, используйте page.on("pageerror").

Использование

browser_context.on("weberror", handler)

Данные события