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Добавляет 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Добавляет скрипт, который будет выполняться в одном из следующих случаев:
- Когда создаётся страница в контексте браузера или происходит навигация.
- Когда вложенный фрейм добавляется или в нём происходит навигация на любой странице в контексте браузера. В этом случае скрипт выполняется в контексте нового фрейма.
Скрипт выполняется после создания документа, но до запуска любых скриптов самой страницы. Это полезно для настройки окружения 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Фоновые страницы поддерживаются только в браузерах на базе Chromium.
Все существующие фоновые страницы в данном контексте.
Использование
BrowserContext.backgroundPages();
Возвращает
browser
Добавлено до v1.9Возвращает экземпляр браузера, к которому относится данный контекст. Если контекст был создан как постоянный (persistent), возвращается null
.
Использование
BrowserContext.browser();
Возвращает
clearCookies
Добавлено до v1.9Удаляет 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 context = browser.newContext();
context.grantPermissions(Arrays.asList("clipboard-read"));
// выполнение действий...
context.clearPermissions();
Возвращает
close
Добавлено до v1.9Закрывает данный контекст браузера. Все страницы, относящиеся к этому контексту, будут закрыты.
Контекст браузера по умолчанию не может быть закрыт.
Использование
BrowserContext.close();
BrowserContext.close(options);
Аргументы
options
BrowserContext.CloseOptions
(опционально)
Возвращает
cookies
Добавлено до v1.9Если не указаны URL-адреса, метод возвращает все cookies. Если указаны URL, возвращаются только cookies, относящиеся к этим URL.
Использование
BrowserContext.cookies();
BrowserContext.cookies(urls);
Аргументы
Возвращает
exposeBinding
Добавлено до v1.9Метод добавляет функцию с именем 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
(опционально)
Возвращает
exposeFunction
Добавлено до v1.9Метод добавляет функцию с именем 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Выдаёт указанные разрешения контексту браузера. Если указано 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
(опционально)
Возвращает
newCDPSession
Добавлено в: v1.11Сессии CDP поддерживаются только в браузерах на базе Chromium.
Возвращает вновь созданную сессию.
Использование
BrowserContext.newCDPSession(page);
Аргументы
page
Page | Frame# Цель, для которой создаётся новая сессия. Для обратной совместимости параметр называетсяpage
, но может быть какPage
, так иFrame
.
Возвращает
newPage
Добавлено до v1.9Создаёт новую страницу в данном контексте браузера.
Использование
BrowserContext.newPage();
Возвращает
pages
Добавлено до v1.9Возвращает все открытые страницы в контексте.
Использование
BrowserContext.pages();
Возвращает
route
Добавлено до v1.9Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются любой страницей в контексте браузера. Как только маршрут включен, каждый запрос, соответствующий шаблону 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()
. -
Функция-обработчик для маршрутизации запроса.
-
options
BrowserContext.RouteOptions
(опционально)
Возвращает
routeFromHAR
Добавлено в: v1.23Если указано, сетевые запросы, выполняемые в контексте, будут обслуживаться из HAR-файла. Подробнее о Replaying from HAR.
Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив setServiceWorkers в 'block'
.
Использование
BrowserContext.routeFromHAR(har);
BrowserContext.routeFromHAR(har, options);
Аргументы
-
Путь к 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Этот метод позволяет изменять соединения 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Эта настройка изменит максимальное время навигации по умолчанию для следующих методов и связанных с ними ярлыков:
- Page.goBack()
- Page.goForward()
- Page.navigate()
- Page.reload()
- Page.setContent()
- Page.waitForNavigation()
Использование
BrowserContext.setDefaultNavigationTimeout(timeout);
Аргументы
setDefaultTimeout
Добавлено до v1.9Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих параметр timeout.
Использование
BrowserContext.setDefaultTimeout(timeout);
Аргументы
setExtraHTTPHeaders
Добавлено до v1.9Дополнительные HTTP-заголовки будут отправляться с каждым запросом, инициированным любой страницей в контексте. Эти заголовки объединяются с дополнительными HTTP-заголовками, установленными для страницы с помощью Page.setExtraHTTPHeaders(). Если страница переопределяет определенный заголовок, будет использоваться значение заголовка, специфичное для страницы, вместо значения заголовка контекста браузера.
BrowserContext.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.
Использование
BrowserContext.setExtraHTTPHeaders(headers);
Аргументы
-
Объект, содержащий дополнительные HTTP-заголовки, которые будут отправляться с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
setGeolocation
Добавлено до v1.9Устанавливает геолокацию контекста. Передача null
или undefined
эмулирует недоступность позиции.
Использование
browserContext.setGeolocation(new Geolocation(59.95, 30.31667));
Рассмотрите возможность использования BrowserContext.grantPermissions() для предоставления разрешений страницам контекста браузера на чтение его геолокации.
Аргументы
Возвращает
setOffline
Добавлено до v1.9Использование
BrowserContext.setOffline(offline);
Аргументы
Возвращает
storageState
Добавлено до v1.9Возвращает состояние хранилища для этого контекста браузера, содержит текущие куки, снимок локального хранилища и снимок IndexedDB.
Использование
BrowserContext.storageState();
BrowserContext.storageState(options);
Аргументы
options
BrowserContext.StorageStateOptions
(опционально)-
setIndexedDB
boolean (опционально) Добавлено в: v1.51#Установите значение
true
, чтобы включить IndexedDB в снимок состояния хранилища. Если ваше приложение использует IndexedDB для хранения токенов аутентификации, таких как Firebase Authentication, включите это.примечаниеIndexedDB с типизированными массивами в настоящее время не поддерживается.
-
Путь к файлу для сохранения состояния хранилища. Если setPath является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, состояние хранилища все равно возвращается, но не будет сохранено на диск.
-
Возвращает
unroute
Добавлено до v1.9Удаляет маршрут, созданный с помощью 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.route() и BrowserContext.routeFromHAR().
Использование
BrowserContext.unrouteAll();
Возвращает
waitForCondition
Добавлено в: v1.32Метод будет блокировать выполнение до тех пор, пока условие не вернет 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Выполняет действие и ожидает, пока 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().
-
-
Обратный вызов, выполняющий действие, вызывающее событие.
Возвращает
waitForPage
Добавлено в: v1.9Выполняет действие и ожидает, пока в контексте не будет создана новая 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().
-
-
Обратный вызов, выполняющий действие, вызывающее событие.
Возвращает
Properties
clock()
Добавлено в: v1.45Playwright имеет возможность имитировать часы и ход времени.
Использование
BrowserContext.clock()
Возвращает
request()
Добавлено в: v1.16Помощник для тестирования API, связанный с этим контекстом. Запросы, сделанные с помощью этого API, будут использовать куки контекста.
Использование
BrowserContext.request()
Возвращает
tracing()
Добавлено в: v1.12Использование
BrowserContext.tracing()
Возвращает
Events
onBackgroundPage(handler)
Добавлено в: v1.11Работает только с постоянным контекстом браузера Chromium.
Вызывается, когда в контексте создается новая фоновая страница.
context.onBackgroundPage(backgroundPage -> {
System.out.println(backgroundPage.url());
});
Использование
BrowserContext.onBackgroundPage(handler)
Данные события
onClose(handler)
Добавлено до v1.9Вызывается, когда контекст браузера закрывается. Это может произойти по одной из следующих причин:
- Контекст браузера закрыт.
- Приложение браузера закрыто или произошло его аварийное завершение.
- Был вызван метод Browser.close().
Использование
BrowserContext.onClose(handler)
Данные события
onConsoleMessage(handler)
Добавлено в: v1.34Вызывается, когда 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Вызывается, когда появляется 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 создается новая страница. Страница может все еще загружаться. Событие также будет срабатывать для всплывающих страниц. См. также 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Вызывается, когда запрос отправляется с любой страницы, созданной через этот контекст. Объект request доступен только для чтения. Чтобы слушать запросы только с определенной страницы, используйте Page.onRequest(handler).
Для перехвата и изменения запросов см. BrowserContext.route() или Page.route().
Использование
BrowserContext.onRequest(handler)
Данные события
onRequestFailed(handler)
Добавлено в: v1.12Вызывается, когда запрос не удается выполнить, например, из-за тайм-аута. Чтобы слушать только неудачные запросы с определенной страницы, используйте Page.onRequestFailed(handler).
HTTP-ошибки, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием BrowserContext.onRequestFinished(handler), а не BrowserContext.onRequestFailed(handler).
Использование
BrowserContext.onRequestFailed(handler)
Данные события
onRequestFinished(handler)
Добавлено в: v1.12Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request
, response
и requestfinished
. Чтобы слушать успешные запросы с определенной страницы, используйте Page.onRequestFinished(handler).
Использование
BrowserContext.onRequestFinished(handler)
Данные события
onResponse(handler)
Добавлено в: v1.12Вызывается, когда статус и заголовки response получены для запроса. Для успешного ответа последовательность событий: request
, response
и requestfinished
. Чтобы слушать события ответа с определенной страницы, используйте Page.onResponse(handler).
Использование
BrowserContext.onResponse(handler)
Данные события
onWebError(handler)
Добавлено в: v1.38Вызывается, когда исключение не обработано на любой из страниц в этом контексте. Чтобы слушать ошибки с определенной страницы, используйте Page.onPageError(handler) вместо этого.
Использование
BrowserContext.onWebError(handler)
Данные события