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

BrowserContext

BrowserContexts provide a way to operate multiple independent browser sessions.

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

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

// Создание нового приватного (инкогнито) контекста браузера
BrowserContext context = browser.newContext();
// Создание новой страницы в этом контексте.
Page page = context.newPage();
page.navigate("https://example.com");
// Закрытие контекста, когда он больше не нужен.
context.close();

Методы

addCookies

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

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

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

browserContext.addCookies(Arrays.asList(cookieObject1, cookieObject2));

Аргументы

  • cookies List<Cookie>#
    • setName String

    • setValue String

    • setUrl String (опционально) Необходимо указать либо url, либо domain и path. Необязательный параметр.

    • setDomain String (опционально) Чтобы cookie применялась ко всем поддоменам, добавьте точку перед доменом, например: ".example.com". Необходимо указать либо url, либо domain и path. Необязательный параметр.

    • setPath String (опционально) Необходимо указать либо url, либо domain и path. Необязательный параметр.

    • setExpires double (опционально) Время в формате Unix (в секундах). Необязательный параметр.

    • setHttpOnly boolean (опционально) Необязательный параметр.

    • setSecure boolean (опционально) Необязательный параметр.

    • setSameSite enum SameSiteAttribute { STRICT, LAX, NONE } (опционально) Необязательный параметр.

Возвращает


addInitScript

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

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

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

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

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

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

// preload.js
Math.random = () => 42;
// В вашем скрипте playwright, если файл preload.js находится в той же директории.
browserContext.addInitScript(Paths.get("preload.js"));
примечание

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

Аргументы

  • script String | Path# Скрипт, который будет выполняться на всех страницах в данном контексте браузера.

Возвращает


backgroundPages

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

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

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

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

BrowserContext.backgroundPages();

Возвращает


browser

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

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

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

BrowserContext.browser();

Возвращает


clearCookies

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

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

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

context.clearCookies();
context.clearCookies(new BrowserContext.ClearCookiesOptions().setName("session-id"));
context.clearCookies(new BrowserContext.ClearCookiesOptions().setDomain("my-origin.com"));
context.clearCookies(new BrowserContext.ClearCookiesOptions().setPath("/api/v1"));
context.clearCookies(new BrowserContext.ClearCookiesOptions()
.setName("session-id")
.setDomain("my-origin.com"));

Аргументы

  • options BrowserContext.ClearCookiesOptions (опционально)
    • setDomain String | Pattern (опционально) Добавлено в: v1.43# Удаляет только cookies с указанным доменом.
    • setName String | Pattern (опционально) Добавлено в: v1.43# Удаляет только cookies с указанным именем.
    • setPath String | Pattern (опционально) Добавлено в: v1.43# Удаляет только cookies с указанным путём.

Возвращает


clearPermissions

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

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

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

BrowserContext context = browser.newContext();
context.grantPermissions(Arrays.asList("clipboard-read"));
// выполнение действий...
context.clearPermissions();

Возвращает


close

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

Закрывает данный контекст браузера. Все страницы, относящиеся к этому контексту, будут закрыты.

примечание

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

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

BrowserContext.close();
BrowserContext.close(options);

Аргументы

  • options BrowserContext.CloseOptions (опционально)
    • setReason String (опционально) Добавлено в: v1.40# Причина, которая будет указана для операций, прерванных из-за закрытия контекста.

Возвращает


cookies

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

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

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

BrowserContext.cookies();
BrowserContext.cookies(urls);

Аргументы

  • urls String | List<String> (опционально)# Необязательный список URL-адресов.

Возвращает


exposeBinding

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

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

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

Смотрите также Page.exposeBinding() для версии, ограниченной страницей.

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

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false));
BrowserContext context = browser.newContext();
context.exposeBinding("pageURL", (source, args) -> source.page().url());
Page page = context.newPage();
page.setContent("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.pageURL();\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>");
page.getByRole(AriaRole.BUTTON).click();
}
}
}

Аргументы

  • name String# Имя функции в объекте window.
  • callback BindingCallback# Callback-функция, которая будет вызываться в контексте Playwright.
  • options BrowserContext.ExposeBindingOptions (опционально)
    • setHandle boolean (опционально)#

      Устарело

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

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

Возвращает


exposeFunction

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

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

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

Смотрите также Page.exposeFunction() для версии, ограниченной страницей.

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

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

import com.microsoft.playwright.*;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false));
BrowserContext context = browser.newContext();
context.exposeFunction("sha256", args -> {
String text = (String) args[0];
MessageDigest crypto;
try {
crypto = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
return null;
}
byte[] token = crypto.digest(text.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(token);
});
Page page = context.newPage();
page.setContent("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>\n");
page.getByRole(AriaRole.BUTTON).click();
}
}
}

Аргументы

  • name String# Имя функции в объекте window.
  • callback FunctionCallback# Callback-функция, которая будет вызываться в контексте Playwright.

Возвращает


grantPermissions

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

Выдаёт указанные разрешения контексту браузера. Если указано origin, разрешения применяются только к этому источнику.

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

BrowserContext.grantPermissions(permissions);
BrowserContext.grantPermissions(permissions, options);

Аргументы

  • permissions List<String># Список разрешений, которые нужно выдать.

    осторожно

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

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

    • 'accelerometer'
    • 'ambient-light-sensor'
    • 'background-sync'
    • 'camera'
    • 'clipboard-read'
    • 'clipboard-write'
    • 'geolocation'
    • 'gyroscope'
    • 'magnetometer'
    • 'microphone'
    • 'midi-sysex' (system-exclusive midi)
    • 'midi'
    • 'notifications'
    • 'payment-handler'
    • 'storage-access'
  • options BrowserContext.GrantPermissionsOptions (опционально)

    • setOrigin String (опционально)# Origin, которому следует выдать разрешения, например "https://example.com".

Возвращает


newCDPSession

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

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

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

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

BrowserContext.newCDPSession(page);

Аргументы

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

Возвращает


newPage

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

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

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

BrowserContext.newPage();

Возвращает


pages

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

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

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

BrowserContext.pages();

Возвращает


route

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

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

примечание

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

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

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

BrowserContext context = browser.newContext();
context.route("**/*.{png,jpg,jpeg}", route -> route.abort());
Page page = context.newPage();
page.navigate("https://example.com");
browser.close();

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

BrowserContext context = browser.newContext();
context.route(Pattern.compile("(\\.png$)|(\\.jpg$)"), route -> route.abort());
Page page = context.newPage();
page.navigate("https://example.com");
browser.close();

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

context.route("/api/**", route -> {
if (route.request().postData().contains("my-string"))
route.fulfill(new Route.FulfillOptions().setBody("mocked-data"));
else
route.resume();
});

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

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

примечание

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

Аргументы

  • url String | Pattern | Predicate<String>#

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

  • handler Consumer<Route>#

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

  • options BrowserContext.RouteOptions (опционально)

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

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

Возвращает


routeFromHAR

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

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

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

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

BrowserContext.routeFromHAR(har);
BrowserContext.routeFromHAR(har, options);

Аргументы

  • har Path#

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

  • options BrowserContext.RouteFromHAROptions (опционально)

    • setNotFound enum HarNotFound { ABORT, FALLBACK } (опционально)#

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

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

    • setUpdate boolean (опционально)#

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

    • setUpdateContent enum RouteFromHarUpdateContentPolicy { EMBED, ATTACH } (опционально) Добавлено в: v1.32#

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

    • setUpdateMode enum HarMode { FULL, MINIMAL } (опционально) Добавлено в: v1.32#

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

    • setUrl String | Pattern (опционально)#

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

Возвращает


routeWebSocket

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

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

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

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

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

context.routeWebSocket("/ws", ws -> {
ws.routeSend(message -> {
if ("to-be-blocked".equals(message))
return;
ws.send(message);
});
ws.connect();
});

Аргументы

  • url String | Pattern | Predicate<String>#

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

  • handler Consumer<WebSocketRoute>#

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

Возвращает


setDefaultNavigationTimeout

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

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

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

BrowserContext.setDefaultNavigationTimeout(timeout);

Аргументы

  • timeout double#

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


setDefaultTimeout

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

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

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

BrowserContext.setDefaultTimeout(timeout);

Аргументы

  • timeout double#

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


setExtraHTTPHeaders

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

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

примечание

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

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

BrowserContext.setExtraHTTPHeaders(headers);

Аргументы

  • headers Map<String, String>#

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

Возвращает


setGeolocation

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

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

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

browserContext.setGeolocation(new Geolocation(59.95, 30.31667));
примечание

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

Аргументы

  • geolocation null | Geolocation#
    • setLatitude double

      Широта между -90 и 90.

    • setLongitude double

      Долгота между -180 и 180.

    • setAccuracy double (опционально)

      Неотрицательное значение точности. По умолчанию 0.

Возвращает


setOffline

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

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

BrowserContext.setOffline(offline);

Аргументы

  • offline boolean#

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

Возвращает


storageState

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

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

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

BrowserContext.storageState();
BrowserContext.storageState(options);

Аргументы

  • options BrowserContext.StorageStateOptions (опционально)
    • setIndexedDB boolean (опционально) Добавлено в: v1.51#

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

      примечание

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

    • setPath Path (опционально)#

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

Возвращает


unroute

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

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

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

BrowserContext.unroute(url);
BrowserContext.unroute(url, handler);

Аргументы

  • url String | Pattern | Predicate<String>#

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

  • handler Consumer<Route> (опционально)#

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

Возвращает


unrouteAll

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

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

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

BrowserContext.unrouteAll();

Возвращает


waitForCondition

Добавлено в: v1.32 browserContext.waitForCondition

Метод будет блокировать выполнение до тех пор, пока условие не вернет true. Все события Playwright будут обрабатываться, пока метод ожидает выполнения условия.

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

Используйте метод для ожидания условия, зависящего от событий страницы:

List<String> failedUrls = new ArrayList<>();
context.onResponse(response -> {
if (!response.ok()) {
failedUrls.add(response.url());
}
});
page1.getByText("Create user").click();
page2.getByText("Submit button").click();
context.waitForCondition(() -> failedUrls.size() > 3);

Аргументы

  • condition [BooleanSupplier]#

    Условие для ожидания.

  • options BrowserContext.WaitForConditionOptions (опционально)

    • setTimeout double (опционально)#

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

Возвращает


waitForConsoleMessage

Добавлено в: v1.34 browserContext.waitForConsoleMessage

Выполняет действие и ожидает, пока ConsoleMessage не будет зарегистрировано на страницах в контексте. Если предикат предоставлен, он передает значение ConsoleMessage в функцию predicate и ожидает, пока predicate(message) не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до того, как событие BrowserContext.onConsoleMessage(handler) будет вызвано.

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

BrowserContext.waitForConsoleMessage(callback);
BrowserContext.waitForConsoleMessage(callback, options);

Аргументы

  • options BrowserContext.WaitForConsoleMessageOptions (опционально)

    • setPredicate Predicate<ConsoleMessage> (опционально)#

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

    • setTimeout double (опционально)#

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

  • callback Runnable#

    Обратный вызов, выполняющий действие, вызывающее событие.

Возвращает


waitForPage

Добавлено в: v1.9 browserContext.waitForPage

Выполняет действие и ожидает, пока в контексте не будет создана новая Page. Если предикат предоставлен, он передает значение Page в функцию predicate и ожидает, пока predicate(event) не вернет истинное значение. Выдаст ошибку, если контекст закроется до создания новой Page.

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

BrowserContext.waitForPage(callback);
BrowserContext.waitForPage(callback, options);

Аргументы

  • options BrowserContext.WaitForPageOptions (опционально)

    • setPredicate Predicate<Page> (опционально)#

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

    • setTimeout double (опционально)#

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

  • callback Runnable#

    Обратный вызов, выполняющий действие, вызывающее событие.

Возвращает


Properties

clock()

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

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

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

BrowserContext.clock()

Возвращает


request()

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

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

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

BrowserContext.request()

Возвращает


tracing()

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

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

BrowserContext.tracing()

Возвращает


Events

onBackgroundPage(handler)

Добавлено в: v1.11 browserContext.onBackgroundPage(handler)
примечание

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

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

context.onBackgroundPage(backgroundPage -> {
System.out.println(backgroundPage.url());
});

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

BrowserContext.onBackgroundPage(handler)

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


onClose(handler)

Добавлено до v1.9 browserContext.onClose(handler)

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

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

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

BrowserContext.onClose(handler)

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


onConsoleMessage(handler)

Добавлено в: v1.34 browserContext.onConsoleMessage(handler)

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

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

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

context.onConsoleMessage(msg -> {
for (int i = 0; i < msg.args().size(); ++i)
System.out.println(i + ": " + msg.args().get(i).jsonValue());
});
page.evaluate("() => console.log('hello', 5, { foo: 'bar' })");

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


onDialog(handler)

Добавлено в: v1.34 browserContext.onDialog(handler)

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

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

context.onDialog(dialog -> {
dialog.accept();
});
примечание

Когда отсутствуют обработчики Page.onDialog(handler) или BrowserContext.onDialog(handler), все диалоги автоматически отклоняются.

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


onPage(handler)

Добавлено до v1.9 browserContext.onPage(handler)

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

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

Page newPage = context.waitForPage(() -> {
page.getByText("open new page").click();
});
System.out.println(newPage.evaluate("location.href"));
примечание

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

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

BrowserContext.onPage(handler)

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


onRequest(handler)

Добавлено в: v1.12 browserContext.onRequest(handler)

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

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

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

BrowserContext.onRequest(handler)

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


onRequestFailed(handler)

Добавлено в: v1.12 browserContext.onRequestFailed(handler)

Вызывается, когда запрос не удается выполнить, например, из-за тайм-аута. Чтобы слушать только неудачные запросы с определенной страницы, используйте Page.onRequestFailed(handler).

примечание

HTTP-ошибки, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием BrowserContext.onRequestFinished(handler), а не BrowserContext.onRequestFailed(handler).

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

BrowserContext.onRequestFailed(handler)

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


onRequestFinished(handler)

Добавлено в: v1.12 browserContext.onRequestFinished(handler)

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

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

BrowserContext.onRequestFinished(handler)

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


onResponse(handler)

Добавлено в: v1.12 browserContext.onResponse(handler)

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

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

BrowserContext.onResponse(handler)

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


onWebError(handler)

Добавлено в: v1.38 browserContext.onWebError(handler)

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

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

BrowserContext.onWebError(handler)

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