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

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'
});
примечание

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

Аргументы

  • script function | string | Object#

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

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

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

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

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

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

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

Возвращает


backgroundPages

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

Фоновая страница поддерживается только в браузерах на основе 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

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

примечание

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

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

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.

Возвращает


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

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

    осторожно

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

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

    • '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
примечание

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, будет приостановлен, если его не продолжить, не выполнить или не прервать.

примечание

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

примечание

Включение маршрутизации отключает 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
примечание

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(). Если страница переопределяет определенный заголовок, будет использоваться значение заголовка, специфичное для страницы, вместо значения заголовка контекста браузера.

примечание

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

Рекомендуется использовать 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, включите это.

      примечание

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

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

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

Возвращает


unroute

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

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

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

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

Аргументы

Возвращает


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

Работает только с постоянным контекстом браузера 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();
});
примечание

Когда нет слушателей 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'));
примечание

Используйте 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').

примечание

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

Сервисные работники поддерживаются только в браузерах на основе 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);

Аргументы

Возвращает