Skip to main content

BrowserContext

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

Если страница открывает другую страницу, например, с помощью вызова window.open, всплывающее окно будет принадлежать контексту браузера родительской страницы.

Playwright позволяет создавать изолированные непостоянные контексты браузера с помощью метода browser.newContext(). Непостоянные контексты браузера не записывают данные о просмотре на диск.

// Создать новый инкогнито контекст браузера
const context = await browser.newContext();
// Создать новую страницу внутри контекста.
const page = await context.newPage();
await page.goto('https://example.com');
// Освободить контекст, когда он больше не нужен.
await context.close();

Методы

addCookies

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

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

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

await browserContext.addCookies([cookieObject1, cookieObject2]);

Аргументы

  • cookies [Array]<[Object]>#
    • name [string]

    • value [string]

    • url [string] (опционально)

      Либо url, либо домен / путь обязательны. Опционально.

    • domain [string] (опционально)

      Чтобы куки применялись ко всем поддоменам, префиксируйте домен точкой, например: ".example.com". Либо url, либо домен / путь обязательны. Опционально.

    • path [string] (опционально)

      Либо url, либо домен / путь обязательны. Опционально.

    • expires [number] (опционально)

      Unix время в секундах. Опционально.

    • httpOnly [boolean] (опционально)

      Опционально.

    • secure [boolean] (опционально)

      Опционально.

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

      Опционально.

Возвращает


addInitScript

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

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

  • Каждый раз, когда страница создается в контексте браузера или навигируется.
  • Каждый раз, когда дочерний фрейм прикрепляется или навигируется на любой странице в контексте браузера. В этом случае скрипт оценивается в контексте вновь прикрепленного фрейма.

Скрипт оценивается после создания документа, но до выполнения любых его скриптов. Это полезно для изменения JavaScript окружения, например, для инициализации Math.random.

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

Пример переопределения Math.random перед загрузкой страницы:

// preload.js
Math.random = () => 42;
// В вашем скрипте playwright, предполагая, что файл preload.js находится в той же директории.
await browserContext.addInitScript({
path: 'preload.js'
});
note

Порядок оценки нескольких скриптов, установленных через browserContext.addInitScript() и page.addInitScript(), не определен.

Аргументы

  • script [function] | [string] | [Object]#

    • path [string] (опционально)

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

    • content [string] (опционально)

      Содержимое скрипта. Опционально.

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

  • arg Serializable (опционально)#

    Опциональный аргумент, который передается в script (поддерживается только при передаче функции).

Возвращает


backgroundPages

Добавлено в: v1.11 browserContext.backgroundPages
note

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

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

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

browserContext.backgroundPages();

Возвращает


browser

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

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

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

browserContext.browser();

Возвращает


clearCookies

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

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

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

await context.clearCookies();
await context.clearCookies({ name: 'session-id' });
await context.clearCookies({ domain: 'my-origin.com' });
await context.clearCookies({ domain: /.*my-origin\.com/ });
await context.clearCookies({ path: '/api/v1' });
await context.clearCookies({ name: 'session-id', domain: 'my-origin.com' });

Аргументы

  • options [Object] (опционально)
    • domain [string] | [RegExp] (опционально) Добавлено в: v1.43#

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

    • name [string] | [RegExp] (опционально) Добавлено в: v1.43#

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

    • path [string] | [RegExp] (опционально) Добавлено в: v1.43#

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

Возвращает


clearPermissions

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

Очищает все переопределения разрешений для контекста браузера.

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

const context = await browser.newContext();
await context.grantPermissions(['clipboard-read']);
// выполняем действия ..
context.clearPermissions();

Возвращает


close

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

Закрывает контекст браузера. Все страницы, принадлежащие контексту браузера, будут закрыты.

note

Контекст браузера по умолчанию не может быть закрыт.

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

await browserContext.close();
await browserContext.close(options);

Аргументы

  • options [Object] (опционально)
    • reason [string] (опционально) Добавлено в: v1.40#

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

Возвращает


cookies

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

Если URL не указан, этот метод возвращает все куки. Если указаны URL, возвращаются только куки, которые влияют на эти URL.

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

await browserContext.cookies();
await browserContext.cookies(urls);

Аргументы

  • urls [string] | [Array]<[string]> (опционально)#

    Опциональный список URL.

Возвращает

  • Promise<[Array]<[Object]>>#
    • name [string]

    • value [string]

    • domain [string]

    • path [string]

    • expires [number]

      Unix время в секундах.

    • httpOnly [boolean]

    • secure [boolean]

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


exposeBinding

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

Метод добавляет функцию с именем name на объекте window каждого фрейма на каждой странице в контексте. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback. Если callback возвращает Promise, он будет ожидаться.

Первый аргумент функции callback содержит информацию о вызывающем: { browserContext: BrowserContext, page: Page, frame: Frame }.

Смотрите page.exposeBinding() для версии только для страницы.

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

Пример экспонирования URL страницы для всех фреймов на всех страницах в контексте:

const { webkit } = require('playwright');  // Или 'chromium', или 'firefox'.

(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
await context.exposeBinding('pageURL', ({ page }) => page.url());
const page = await context.newPage();
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Нажми меня</button>
<div></div>
`);
await page.getByRole('button').click();
})();

Аргументы

  • name [string]#

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

  • callback [function]#

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

  • options [Object] (опционально)

    • handle [boolean] (опционально)#

      Устарело

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

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

Возвращает


exposeFunction

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

Метод добавляет функцию с именем name на объекте window каждого фрейма на каждой странице в контексте. При вызове функция выполняет callback и возвращает Promise, который разрешается в возвращаемое значение callback.

Если callback возвращает Promise, он будет ожидаться.

Смотрите page.exposeFunction() для версии только для страницы.

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

Пример добавления функции sha256 ко всем страницам в контексте:

const { webkit } = require('playwright');  // Или 'chromium', или 'firefox'.
const crypto = require('crypto');

(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
await context.exposeFunction('sha256', text =>
crypto.createHash('sha256').update(text).digest('hex'),
);
const page = await context.newPage();
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Нажми меня</button>
<div></div>
`);
await page.getByRole('button').click();
})();

Аргументы

  • name [string]#

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

  • callback [function]#

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

Возвращает


grantPermissions

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

Предоставляет указанные разрешения контексту браузера. Предоставляет соответствующие разрешения для указанного источника, если он указан.

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

await browserContext.grantPermissions(permissions);
await browserContext.grantPermissions(permissions, options);

Аргументы

  • permissions [Array]<[string]>#

    Список разрешений для предоставления.

    danger

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

    Вот некоторые разрешения, которые могут поддерживаться некоторыми браузерами:

    • 'accelerometer'
    • 'ambient-light-sensor'
    • 'background-sync'
    • 'camera'
    • 'clipboard-read'
    • 'clipboard-write'
    • 'geolocation'
    • 'gyroscope'
    • 'magnetometer'
    • 'microphone'
    • 'midi-sysex' (системно-эксклюзивный midi)
    • 'midi'
    • 'notifications'
    • 'payment-handler'
    • 'storage-access'
  • options [Object] (опционально)

    • origin [string] (опционально)#

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

Возвращает


newCDPSession

Добавлено в: v1.11 browserContext.newCDPSession
note

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

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

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

await browserContext.newCDPSession(page);

Аргументы

  • page Page | Frame#

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

Возвращает


newPage

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

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

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

await browserContext.newPage();

Возвращает


pages

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

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

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

browserContext.pages();

Возвращает


removeAllListeners

Добавлено в: v1.47 browserContext.removeAllListeners

Удаляет всех слушателей указанного типа (или всех зарегистрированных слушателей, если тип не указан). Позволяет дождаться завершения асинхронных слушателей или игнорировать последующие ошибки от этих слушателей.

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

await browserContext.removeAllListeners();
await browserContext.removeAllListeners(type, options);

Аргументы

  • type [string] (опционально)#
  • options [Object] (опционально)
    • behavior "wait" | "ignoreErrors" | "default" (опционально)#

      Указывает, следует ли ждать завершения уже работающих слушателей и что делать, если они выбрасывают ошибки:

      • 'default' - не ждать завершения текущих вызовов слушателей (если таковые имеются), если слушатель выбрасывает, это может привести к необработанной ошибке
      • 'wait' - дождаться завершения текущих вызовов слушателей (если таковые имеются)
      • 'ignoreErrors' - не ждать завершения текущих вызовов слушателей (если таковые имеются), все ошибки, выброшенные слушателями после удаления, будут тихо пойманы

Возвращает


route

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

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

note

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

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

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

const context = await browser.newContext();
await context.route('**/*.{png,jpg,jpeg}', route => route.abort());
const page = await context.newPage();
await page.goto('https://example.com');
await browser.close();

или тот же фрагмент, использующий регулярное выражение вместо этого:

const context = await browser.newContext();
await context.route(/(\.png$)|(\.jpg$)/, route => route.abort());
const page = await context.newPage();
await page.goto('https://example.com');
await browser.close();

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

await context.route('/api/**', async route => {
if (route.request().postData().includes('my-string'))
await route.fulfill({ body: 'mocked-data' });
else
await route.continue();
});

Маршруты страниц (установленные с помощью page.route()) имеют приоритет над маршрутами контекста браузера, когда запрос соответствует обоим обработчикам.

Чтобы удалить маршрут с его обработчиком, вы можете использовать browserContext.unroute().

note

Включение маршрутизации отключает http-кэш.

Аргументы

  • url [string] | [RegExp] | [function]([URL]):[boolean]#

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

  • handler [function](Route, Request):Promise<[Object]> | [Object]#

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

  • options [Object] (опционально)

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

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

Возвращает


routeFromHAR

Добавлено в: v1.23 browserContext.routeFromHAR

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

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

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

await browserContext.routeFromHAR(har);
await browserContext.routeFromHAR(har, options);

Аргументы

  • har [string]#

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

  • options [Object] (опционально)

    • notFound "abort" | "fallback" (опционально)#

      • Если установлено в 'abort', любой запрос, не найденный в файле HAR, будет прерван.
      • Если установлено в 'fallback', будет переход к следующему обработчику маршрута в цепочке обработчиков.

      По умолчанию - прерывание.

    • update [boolean] (опционально)#

      Если указано, обновляет данный HAR фактической сетевой информацией вместо обслуживания из файла. Файл записывается на диск, когда вызывается browserContext.close().

    • updateContent "embed" | "attach" (опционально) Добавлено в: v1.32#

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

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

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

    • url [string] | [RegExp] (опционально)#

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

Возвращает


routeWebSocket

Добавлено в: v1.48 browserContext.routeWebSocket

Этот метод позволяет изменять соединения WebSocket, которые выполняются любой страницей в контексте браузера.

Обратите внимание, что только WebSocket, созданные после вызова этого метода, будут маршрутизироваться. Рекомендуется вызывать этот метод перед созданием любых страниц.

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

Ниже приведен пример простого обработчика, который блокирует некоторые сообщения WebSocket. Смотрите WebSocketRoute для получения дополнительных сведений и примеров.

await context.routeWebSocket('/ws', async ws => {
ws.routeSend(message => {
if (message === 'to-be-blocked')
return;
ws.send(message);
});
await ws.connect();
});

Аргументы

  • url [string] | [RegExp] | [function]([URL]):[boolean]#

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

  • handler [function](WebSocketRoute):Promise<[Object]> | [Object]#

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

Возвращает


serviceWorkers

Добавлено в: v1.11 browserContext.serviceWorkers
note

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

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

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

browserContext.serviceWorkers();

Возвращает


setDefaultNavigationTimeout

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

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

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

browserContext.setDefaultNavigationTimeout(timeout);

Аргументы

  • timeout [number]#

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


setDefaultTimeout

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

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

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

browserContext.setDefaultTimeout(timeout);

Аргументы

  • timeout [number]#

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


setExtraHTTPHeaders

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

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

note

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

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

await browserContext.setExtraHTTPHeaders(headers);

Аргументы

  • headers [Object]<[string], [string]>#

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

Возвращает


setGeolocation

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

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

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

await browserContext.setGeolocation({ latitude: 59.95, longitude: 30.31667 });
note

Рекомендуется использовать browserContext.grantPermissions(), чтобы предоставить разрешения для страниц контекста браузера для чтения его геолокации.

Аргументы

  • geolocation [null] | [Object]#
    • latitude [number]

      Широта от -90 до 90.

    • longitude [number]

      Долгота от -180 до 180.

    • accuracy [number] (опционально)

      Ненегативное значение точности. По умолчанию 0.

Возвращает


setOffline

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

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

await browserContext.setOffline(offline);

Аргументы

  • offline [boolean]#

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

Возвращает


storageState

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

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

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

await browserContext.storageState();
await browserContext.storageState(options);

Аргументы

  • options [Object] (опционально)
    • indexedDB [boolean] (опционально) Добавлено в: v1.51#

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

      note

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

    • path [string] (опционально)#

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

Возвращает

  • Promise<[Object]>#
    • cookies [Array]<[Object]>
      • name [string]

      • value [string]

      • domain [string]

      • path [string]

      • expires [number]

        Unix время в секундах.

      • httpOnly [boolean]

      • secure [boolean]

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

    • origins [Array]<[Object]>
      • origin [string]

      • localStorage [Array]<[Object]>

        • name [string]

        • value [string]


unroute

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

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

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

await browserContext.unroute(url);
await browserContext.unroute(url, handler);

Аргументы

  • url [string] | [RegExp] | [function]([URL]):[boolean]#

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

  • handler [function](Route, Request):Promise<[Object]> | [Object] (опционально)#

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

Возвращает


unrouteAll

Добавлено в: v1.41 browserContext.unrouteAll

Удаляет все маршруты, созданные с помощью browserContext.route() и browserContext.routeFromHAR().

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

await browserContext.unrouteAll();
await browserContext.unrouteAll(options);

Аргументы

  • options [Object] (опционально)
    • behavior "wait" | "ignoreErrors" | "default" (опционально)#

      Указывает, следует ли ждать завершения уже работающих обработчиков и что делать, если они выбрасывают ошибки:

      • 'default' - не ждать завершения текущих вызовов обработчиков (если таковые имеются), если не маршрутизированный обработчик выбрасывает, это может привести к необработанной ошибке
      • 'wait' - дождаться завершения текущих вызовов обработчиков (если таковые имеются)
      • 'ignoreErrors' - не ждать завершения текущих вызовов обработчиков (если таковые имеются), все ошибки, выброшенные обработчиками после отмены маршрутизации, будут тихо пойманы

Возвращает


waitForEvent

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

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

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

const pagePromise = context.waitForEvent('page');
await page.getByRole('button').click();
const page = await pagePromise;

Аргументы

  • event [string]#

    Имя события, то же самое, что и передается в browserContext.on(event).

  • optionsOrPredicate [function] | [Object] (опционально)#

    • predicate [function]

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

    • timeout [number] (опционально)

      Максимальное время ожидания в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить через опцию actionTimeout в конфигурации или с помощью метода browserContext.setDefaultTimeout().

    Либо предикат, который принимает событие, либо объект параметров. Опционально.

  • options [Object] (опционально)

    • predicate [function] (опционально)#

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

Возвращает


Свойства

clock

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

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

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

browserContext.clock

Тип


request

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

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

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

browserContext.request

Тип


tracing

Добавлено в: v1.12 browserContext.tracing

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

browserContext.tracing

Тип


События

on('backgroundpage')

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

Работает только с постоянным контекстом браузера Chromium.

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

const backgroundPage = await context.waitForEvent('backgroundpage');

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

browserContext.on('backgroundpage', data => {});

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


on('close')

Добавлено до v1.9 browserContext.on('close')

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

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

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

browserContext.on('close', data => {});

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


on('console')

Добавлено в: v1.34 browserContext.on('console')

Событие, которое возникает, когда JavaScript на странице вызывает один из методов API консоли, например, console.log или console.dir.

Аргументы, переданные в console.log, и страница доступны в аргументе обработчика события ConsoleMessage.

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

context.on('console', async msg => {
const values = [];
for (const arg of msg.args())
values.push(await arg.jsonValue());
console.log(...values);
});
await 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', dialog => {
dialog.accept();
});
note

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

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


on('page')

Добавлено до v1.9 browserContext.on('page')

Событие, которое возникает, когда новая страница создается в BrowserContext. Страница может все еще загружаться. Событие также срабатывает для всплывающих страниц. Смотрите также page.on('popup'), чтобы получать события о всплывающих окнах, относящихся к конкретной странице.

Самый ранний момент, когда страница доступна, - это когда она навигировала к начальному URL. Например, при открытии всплывающего окна с помощью window.open('http://example.com'), это событие сработает, когда сетевой запрос к "http://example.com" будет завершен, и его ответ начнет загружаться во всплывающее окно. Если вы хотите маршрутизировать/слушать этот сетевой запрос, используйте browserContext.route() и browserContext.on('request') соответственно, вместо аналогичных методов на Page.

const newPagePromise = context.waitForEvent('page');
await page.getByText('открыть новую страницу').click();
const newPage = await newPagePromise;
console.log(await newPage.evaluate('location.href'));
note

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

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

browserContext.on('page', data => {});

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


on('request')

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

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

Чтобы перехватить и изменить запросы, смотрите browserContext.route() или page.route().

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

browserContext.on('request', data => {});

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


on('requestfailed')

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

Событие, которое возникает, когда запрос не удался, например, из-за тайм-аута. Чтобы слушать только неудачные запросы из конкретной страницы, используйте page.on('requestfailed').

note

HTTP-ошибки, такие как 404 или 503, все еще являются успешными ответами с точки зрения HTTP, поэтому запрос завершится с событием browserContext.on('requestfinished') и не с browserContext.on('requestfailed').

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

browserContext.on('requestfailed', data => {});

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


on('requestfinished')

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

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

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

browserContext.on('requestfinished', data => {});

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


on('response')

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

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

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

browserContext.on('response', data => {});

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


on('serviceworker')

Добавлено в: v1.11 browserContext.on('serviceworker')
note

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

Событие, которое возникает, когда новый сервисный работник создается в контексте.

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

browserContext.on('serviceworker', data => {});

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


on('weberror')

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

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

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

browserContext.on('weberror', data => {});

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


Устарело

setHTTPCredentials

Добавлено до v1.9 browserContext.setHTTPCredentials
Устарело

Браузеры могут кэшировать учетные данные после успешной аутентификации. Вместо этого создайте новый контекст браузера.

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

await browserContext.setHTTPCredentials(httpCredentials);

Аргументы

  • httpCredentials [null] | [Object]#
    • username [string]

    • password [string]

Возвращает