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

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

Добавляет cookies в этот контекст браузера. Все страницы в этом контексте будут иметь эти cookies. Cookies можно получить через browser_context.cookies().

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

browser_context.add_cookies([cookie_object1, cookie_object2])

Аргументы

  • cookies List[Dict]#
    • name str

    • value str

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

      Требуется либо url, либо одновременно domain и path. Необязательно.

    • domain str (опционально)

      Чтобы cookie применялась ко всем поддоменам, добавьте к домену ведущую точку, например: ".example.com". Требуется либо url, либо одновременно domain и path. Необязательно.

    • path str (опционально)

      Требуется либо url, либо одновременно domain и path. Необязательно.

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

      Unix time в секундах. Необязательно.

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

      Необязательно.

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

      Необязательно.

    • sameSite "Strict" | "Lax" | "None" (опционально)

      Необязательно.

    • partitionKey str (опционально)

      Для разделённых сторонних cookies (также известных как CHIPS) — ключ разделения (partition key). Необязательно.

Возвращает


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 (опционально)#

    Скрипт, который будет выполнен на всех страницах в контексте браузера. Необязательно.

Возвращает


clear_cookies

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

Удаляет cookies из контекста. Принимает необязательный фильтр.

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

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#

    Удаляет только cookies с указанным доменом.

  • name str | Pattern (опционально) Добавлено в: v1.43#

    Удаляет только cookies с указанным именем.

  • path str | Pattern (опционально) Добавлено в: v1.43#

    Удаляет только cookies с указанным путём.

Возвращает


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 не указаны, этот метод возвращает все cookies. Если URL указаны, возвращаются только cookies, влияющие на эти URL.

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

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 time в секундах.

    • 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)

Аргументы

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

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

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

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

Возвращает


expect_event

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

Ожидает срабатывания события и передаёт его значение в функцию predicate. Возвращается, когда predicate возвращает истинное значение. Выбросит ошибку, если контекст будет закрыт до срабатывания события. Возвращает значение данных события.

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

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)

Аргументы

  • 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'
    • 'local-fonts'
    • 'local-network-access'
    • '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

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

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

  • update_mode "full" | "minimal" (опционально) Добавлено в: v1.32#

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

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

    Глобальный шаблон, регулярное выражение или предикат для сопоставления 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)

Аргументы

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

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

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

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

Возвращает


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 заголовки будут отправляться с каждым запросом, инициированным любой страницей в контексте. Эти заголовки объединяются с дополнительными 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

Добавлено до 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

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

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

browser_context.set_offline(offline)

Аргументы

  • offline bool#

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

Возвращает


storage_state

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

Возвращает состояние хранилища для этого контекста браузера, содержит текущие куки, снимок локального хранилища и снимок 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)

Аргументы

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

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

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

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

Возвращает


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

Возвращает


Properties

browser

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

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

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

browser_context.browser

Возвращает


clock

Добавлено в: v1.45 browserContext.clock

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

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

browser_context.clock

Тип


pages

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

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

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

browser_context.pages

Возвращает


request

Добавлено в: v1.16 browserContext.request

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

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

browser_context.request

Тип


service_workers

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

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

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

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

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 на странице вызывает один из методов консоли 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")

Добавлено в: 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")

Добавлено до 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")

Добавлено в: 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")

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

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

browser_context.on("requestfinished", handler)

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


on("response")

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

Вызывается, когда response статус и заголовки получены для запроса. Для успешного ответа последовательность событий: request, response и requestfinished. Чтобы слушать события ответа с определенной страницы, используйте 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)

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


Deprecated

on("backgroundpage")

Добавлено в: v1.11 browserContext.on("backgroundpage")
Deprecated

Фоновые страницы были удалены из Chromium вместе с расширениями Manifest V2.

Это событие не генерируется.

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

browser_context.on("backgroundpage", handler)

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


background_pages

Добавлено в: v1.11 browserContext.background_pages
Deprecated

Фоновые страницы были удалены из Chromium вместе с расширениями Manifest V2.

Возвращает пустой список.

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

browser_context.background_pages

Возвращает