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.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Добавляет скрипт, который будет оцениваться в одном из следующих сценариев:
- Каждый раз, когда страница создается в контексте браузера или навигируется.
- Каждый раз, когда дочерний фрейм прикрепляется или навигируется на любой странице в контексте браузера. В этом случае скрипт оценивается в контексте вновь прикрепленного фрейма.
Скрипт оценивается после создания документа, но до выполнения любых его скриптов. Это полезно для изменения 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Фоновая страница поддерживается только в браузерах на основе Chromium.
Все существующие фоновые страницы в контексте.
Использование
browserContext.backgroundPages();
Возвращает
browser
Добавлено до v1.9Возвращает экземпляр браузера контекста. Если он был запущен как постоянный контекст, возвращается null.
Использование
browserContext.browser();
Возвращает
clearCookies
Добавлено до v1.9Удаляет куки из контекста. Принимает опциональный фильтр.
Использование
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] (опционально)
Возвращает
clearPermissions
Добавлено до v1.9Очищает все переопределения разрешений для контекста браузера.
Использование
const context = await browser.newContext();
await context.grantPermissions(['clipboard-read']);
// выполняем действия ..
context.clearPermissions();
Возвращает
close
Добавлено до v1.9Закрывает контекст браузера. Все страницы, принадлежащие контексту браузера, будут закрыты.
Контекст браузера по умолчанию не может быть закрыт.
Использование
await browserContext.close();
await browserContext.close(options);
Аргументы
options
[Object] (опционально)-
reason
[string] (опционально) Добавлено в: v1.40#Причина, которая будет сообщена о действиях, прерванных закрытием контекста.
-
Возвращает
cookies
Добавлено до v1.9Если 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Метод добавляет функцию с именем 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Метод добавляет функцию с именем 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Предоставляет указанные разрешения контексту браузера. Предоставляет соответствующие разрешения для указанного источника, если он указан.
Использование
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.11CDP-сессии поддерживаются только в браузерах на основе Chromium.
Возвращает вновь созданную сессию.
Использование
await browserContext.newCDPSession(page);
Аргументы
-
Цель для создания новой сессии. Для обратной совместимости этот параметр называется
page
, но он может быть типаPage
илиFrame
.
Возвращает
newPage
Добавлено до v1.9Создает новую страницу в контексте браузера.
Использование
await browserContext.newPage();
Возвращает
pages
Добавлено до v1.9Возвращает все открытые страницы в контексте.
Использование
browserContext.pages();
Возвращает
removeAllListeners
Добавлено в: v1.47Удаляет всех слушателей указанного типа (или всех зарегистрированных слушателей, если тип не указан). Позволяет дождаться завершения асинхронных слушателей или игнорировать последующие ошибки от этих слушателей.
Использование
await browserContext.removeAllListeners();
await browserContext.removeAllListeners(type, options);
Аргументы
type
[string] (опционально)#options
[Object] (опционально)-
behavior
"wait" | "ignoreErrors" | "default" (опционально)#Указывает, следует ли ждать завершения уже работающих слушателей и что делать, если они выбрасывают ошибки:
'default'
- не ждать завершения текущих вызовов слушателей (если таковые имеются), если слушатель выбрасывает, это может привести к необработанной ошибке'wait'
- дождаться завершения текущих вызовов слушателей (если таковые имеются)'ignoreErrors'
- не ждать завершения текущих вызовов слушателей (если таковые имеются), все ошибки, выброшенные слушателями после удаления, будут тихо пойманы
-
Возвращает
route
Добавлено до v1.9Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются любой страницей в контексте браузера. Как только маршрут включен, каждый запрос, соответствующий шаблону 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Если указано, сетевые запросы, выполняемые в контексте, будут обслуживаться из файла 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Этот метод позволяет изменять соединения 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.11Service workers поддерживаются только в браузерах на основе Chromium.
Все существующие сервисные работники в контексте.
Использование
browserContext.serviceWorkers();
Возвращает
setDefaultNavigationTimeout
Добавлено до v1.9Эта настройка изменит максимальное время навигации по умолчанию для следующих методов и связанных ярлыков:
Использование
browserContext.setDefaultNavigationTimeout(timeout);
Аргументы
-
timeout
[number]#Максимальное время навигации в миллисекундах
setDefaultTimeout
Добавлено до v1.9Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих опцию timeout.
Использование
browserContext.setDefaultTimeout(timeout);
Аргументы
-
timeout
[number]#Максимальное время в миллисекундах. Передайте
0
, чтобы отключить тайм-аут.
setExtraHTTPHeaders
Добавлено до v1.9Дополнительные HTTP заголовки будут отправлены с каждым запросом, инициированным любой страницей в контексте. Эти заголовки объединяются с дополнительными HTTP заголовками, специфичными для страницы, установленными с помощью page.setExtraHTTPHeaders(). Если страница переопределяет определенный заголовок, будет использоваться значение заголовка, специфичное для страницы, вместо значения заголовка контекста браузера.
browserContext.setExtraHTTPHeaders() не гарантирует порядок заголовков в исходящих запросах.
Использование
await browserContext.setExtraHTTPHeaders(headers);
Аргументы
-
headers
[Object]<[string], [string]>#Объект, содержащий дополнительные HTTP заголовки, которые будут отправлены с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
setGeolocation
Добавлено до v1.9Устанавливает геолокацию контекста. Передача 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Использование
await browserContext.setOffline(offline);
Аргументы
-
offline
[boolean]#Указывает, следует ли эмулировать отключение сети для контекста браузера.
Возвращает
storageState
Добавлено до v1.9Возвращает состояние хранилища для этого контекста браузера, содержит текущие куки, снимок локального хранилища и снимок IndexedDB.
Использование
await browserContext.storageState();
await browserContext.storageState(options);
Аргументы
options
[Object] (опционально)-
indexedDB
[boolean] (опционально) Добавлено в: v1.51#Установите в
true
, чтобы включить IndexedDB в снимок состояния хранилища. Если ваше приложение использует IndexedDB для хранения токенов аутентификации, таких как аутентификация Firebase, включите это.noteIndexedDB с типизированными массивами в настоящее время не поддерживается.
-
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.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.route() и browserContext.routeFromHAR().
Использование
await browserContext.unrouteAll();
await browserContext.unrouteAll(options);
Аргументы
options
[Object] (опционально)-
behavior
"wait" | "ignoreErrors" | "default" (опционально)#Указывает, следует ли ждать завершения уже работающих обработчиков и что делать, если они выбрасывают ошибки:
'default'
- не ждать завершения текущих вызовов обработчиков (если таковые имеются), если не маршрутизированный обработчик выбрасывает, это может привести к необработанной ошибке'wait'
- дождаться завершения текущих вызовов обработчиков (если таковые имеются)'ignoreErrors'
- не ждать завершения текущих вызовов обработчиков (если таковые имеются), все ошибки, выброшенные обработчиками после отмены маршрутизации, будут тихо пойманы
-
Возвращает
waitForEvent
Добавлено до v1.9Ожидает, когда событие произойдет, и передает его значение в предикатную функцию. Возвращает, когда предикат возвращает истинное значение. Выдаст ошибку, если контекст закроется до того, как событие произойдет. Возвращает значение данных события.
Использование
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.45Playwright имеет возможность имитировать часы и течение времени.
Использование
browserContext.clock
Тип
request
Добавлено в: v1.16Помощник API тестирования, связанный с этим контекстом. Запросы, сделанные с помощью этого API, будут использовать куки контекста.
Использование
browserContext.request
Тип
tracing
Добавлено в: v1.12Использование
browserContext.tracing
Тип
События
on('backgroundpage')
Добавлено в: v1.11Работает только с постоянным контекстом браузера Chromium.
Событие, которое возникает, когда новая фоновая страница создается в контексте.
const backgroundPage = await context.waitForEvent('backgroundpage');
Использование
browserContext.on('backgroundpage', data => {});
Данные события
on('close')
Добавлено до v1.9Событие, которое возникает, когда контекст браузера закрывается. Это может произойти по одной из следующих причин:
- Контекст браузера закрыт.
- Браузерное приложение закрыто или аварийно завершило работу.
- Вызван метод browser.close().
Использование
browserContext.on('close', data => {});
Данные события
on('console')
Добавлено в: v1.34Событие, которое возникает, когда 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Событие, которое возникает, когда появляется диалог 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. Страница может все еще загружаться. Событие также срабатывает для всплывающих страниц. Смотрите также 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Событие, которое возникает, когда запрос выдается из любых страниц, созданных через этот контекст. Объект request является только для чтения. Чтобы слушать только запросы из конкретной страницы, используйте page.on('request').
Чтобы перехватить и изменить запросы, смотрите browserContext.route() или page.route().
Использование
browserContext.on('request', data => {});
Данные события
on('requestfailed')
Добавлено в: v1.12Событие, которое возникает, когда запрос не удался, например, из-за тайм-аута. Чтобы слушать только неудачные запросы из конкретной страницы, используйте page.on('requestfailed').
HTTP-ошибки, такие как 404 или 503, все еще являются успешными ответами с точки зрения HTTP, поэтому запрос завершится с событием browserContext.on('requestfinished') и не с browserContext.on('requestfailed').
Использование
browserContext.on('requestfailed', data => {});
Данные события
on('requestfinished')
Добавлено в: v1.12Событие, которое возникает, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий - request
, response
и requestfinished
. Чтобы слушать успешные запросы из конкретной страницы, используйте page.on('requestfinished').
Использование
browserContext.on('requestfinished', data => {});
Данные события
on('response')
Добавлено в: v1.12Событие, которое возникает, когда статус и заголовки response получены для запроса. Для успешного ответа последовательность событий - request
, response
и requestfinished
. Чтобы слушать события ответа из конкретной страницы, используйте page.on('response').
Использование
browserContext.on('response', data => {});
Данные события
on('serviceworker')
Добавлено в: v1.11Сервисные работники поддерживаются только в браузерах на основе Chromium.
Событие, которое возникает, когда новый сервисный работник создается в контексте.
Использование
browserContext.on('serviceworker', data => {});
Данные события
on('weberror')
Добавлено в: v1.38Событие, которое возникает, когда исключение не обрабатывается в любой из страниц в этом контексте. Чтобы слушать ошибки из конкретной страницы, используйте page.on('pageerror') вместо этого.
Использование
browserContext.on('weberror', data => {});
Данные события
Устарело
setHTTPCredentials
Добавлено до v1.9Браузеры могут кэшировать учетные данные после успешной аутентификации. Вместо этого создайте новый контекст браузера.
Использование
await browserContext.setHTTPCredentials(httpCredentials);
Аргументы
httpCredentials
[null] | [Object]#-
username
[string] -
password
[string]
-
Возвращает