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

BrowserContext

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

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

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

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Firefox.LaunchAsync(new() { Headless = false });
// Создать новый инкогнито-контекст браузера
var context = await browser.NewContextAsync();
// Создать новую страницу внутри контекста.
var page = await context.NewPageAsync();
await page.GotoAsync("https://bing.com");
// Закрыть контекст, когда он больше не нужен.
await context.CloseAsync();

Методы

AddCookiesAsync

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

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

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

await context.AddCookiesAsync(new[] { cookie1, cookie2 });

Аргументы

  • cookies IEnumerable<Cookie>#
    • Name string

    • Value string

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

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

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

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

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

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

    • Expires [float]? (опционально)

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

    • HttpOnly bool? (опционально)

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

    • Secure bool? (опционально)

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

    • SameSite enum SameSiteAttribute { Strict, Lax, None }? (опционально)

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

Возвращает


AddInitScriptAsync

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

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

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

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

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

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

// preload.js
Math.random = () => 42;
await Context.AddInitScriptAsync(scriptPath: "preload.js");
примечание

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

Аргументы

  • script string | string#

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

Возвращает


BackgroundPages

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

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

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

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

BrowserContext.BackgroundPages

Возвращает


Browser

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

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

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

BrowserContext.Browser

Возвращает


ClearCookiesAsync

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

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

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

await context.ClearCookiesAsync();
await context.ClearCookiesAsync(new() { Name = "session-id" });
await context.ClearCookiesAsync(new() { Domain = "my-origin.com" });
await context.ClearCookiesAsync(new() { Path = "/api/v1" });
await context.ClearCookiesAsync(new() { Name = "session-id", Domain = "my-origin.com" });

Аргументы

  • options BrowserContextClearCookiesOptions? (опционально)
    • Domain|DomainRegex string? | Regex? (опционально) Добавлено в: v1.43#

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

    • Name|NameRegex string? | Regex? (опционально) Добавлено в: v1.43#

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

    • Path|PathRegex string? | Regex? (опционально) Добавлено в: v1.43#

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

Возвращает


ClearPermissionsAsync

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

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

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

var context = await browser.NewContextAsync();
await context.GrantPermissionsAsync(new[] { "clipboard-read" });
// В качестве альтернативы, вы можете использовать вспомогательный класс ContextPermissions
// для указания разрешений...
// выполняйте действия ...
await context.ClearPermissionsAsync();

Возвращает


CloseAsync

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

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

примечание

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

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

await BrowserContext.CloseAsync(options);

Аргументы

  • options BrowserContextCloseOptions? (опционально)
    • Reason string? (опционально) Добавлено в: v1.40#

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

Возвращает


CookiesAsync

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

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

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

await BrowserContext.CookiesAsync(urls);

Аргументы

  • urls string? | IEnumerable?<string> (опционально)#

    Необязательный список URL-адресов.

Возвращает


ExposeBindingAsync

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

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

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

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

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

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

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new() { Headless = false });
var context = await browser.NewContextAsync();

await context.ExposeBindingAsync("pageURL", source => source.Page.Url);
var page = await context.NewPageAsync();
await page.SetContentAsync("<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>");
await page.GetByRole(AriaRole.Button).ClickAsync();

Аргументы

  • name string#

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

  • callback Action<BindingSource, T, [TResult]>#

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

  • options BrowserContextExposeBindingOptions? (опционально)

    • Handle bool? (опционально)#

      Устарело

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

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

Возвращает


ExposeFunctionAsync

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

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

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

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

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

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

using Microsoft.Playwright;
using System;
using System.Security.Cryptography;
using System.Threading.Tasks;

class BrowserContextExamples
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new() { Headless = false });
var context = await browser.NewContextAsync();

await context.ExposeFunctionAsync("sha256", (string input) =>
{
return Convert.ToBase64String(
SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
});

var page = await context.NewPageAsync();
await page.SetContentAsync("<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>");

await page.GetByRole(AriaRole.Button).ClickAsync();
Console.WriteLine(await page.TextContentAsync("div"));
}
}

Аргументы

  • name string#

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

  • callback Action<T, [TResult]>#

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

Возвращает


GrantPermissionsAsync

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

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

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

await BrowserContext.GrantPermissionsAsync(permissions, options);

Аргументы

  • permissions IEnumerable<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 BrowserContextGrantPermissionsOptions? (опционально)

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

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

Возвращает


NewCDPSessionAsync

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

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

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

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

await BrowserContext.NewCDPSessionAsync(page);

Аргументы

  • page Page | Frame#

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

Возвращает


NewPageAsync

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

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

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

await BrowserContext.NewPageAsync();

Возвращает


Pages

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

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

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

BrowserContext.Pages

Возвращает


RouteAsync

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

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

примечание

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

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

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

var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await context.RouteAsync("**/*.{png,jpg,jpeg}", r => r.AbortAsync());
await page.GotoAsync("https://theverge.com");
await browser.CloseAsync();

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

var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await context.RouteAsync(new Regex("(\\.png$)|(\\.jpg$)"), r => r.AbortAsync());
await page.GotoAsync("https://theverge.com");
await browser.CloseAsync();

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

await page.RouteAsync("/api/**", async r =>
{
if (r.Request.PostData.Contains("my-string"))
await r.FulfillAsync(new() { Body = "mocked-data" });
else
await r.ContinueAsync();
});

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

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

примечание

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

Аргументы

  • url string | Regex | Func<string, bool>#

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

  • handler Action<Route>#

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

  • options BrowserContextRouteOptions? (опционально)

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

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

Возвращает


RouteFromHARAsync

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

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

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

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

await BrowserContext.RouteFromHARAsync(har, options);

Аргументы

  • har string#

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

  • options BrowserContextRouteFromHAROptions? (опционально)

    • NotFound enum HarNotFound { Abort, Fallback }? (опционально)#

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

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

    • Update bool? (опционально)#

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

    • UpdateContent enum RouteFromHarUpdateContentPolicy { Embed, Attach }? (опционально) Добавлено в: v1.32#

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

    • UpdateMode enum HarMode { Full, Minimal }? (опционально) Добавлено в: v1.32#

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

    • Url|UrlRegex string? | Regex? (опционально)#

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

Возвращает


RouteWebSocketAsync

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

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

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

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

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

await context.RouteWebSocketAsync("/ws", async ws => {
ws.RouteSend(message => {
if (message == "to-be-blocked")
return;
ws.Send(message);
});
await ws.ConnectAsync();
});

Аргументы

  • url string | Regex | Func<string, bool>#

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

  • handler Action<WebSocketRoute>#

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

Возвращает


RunAndWaitForConsoleMessageAsync

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

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

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

await BrowserContext.RunAndWaitForConsoleMessageAsync(action, options);

Аргументы

  • action Func<Task>#

    Действие, которое вызывает событие.

  • options BrowserContextRunAndWaitForConsoleMessageOptions? (опционально)

    • Predicate Func<ConsoleMessage?, bool> (опционально)#

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

    • Timeout [float]? (опционально)#

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

Возвращает


WaitForConsoleMessageAsync

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

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

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

await BrowserContext.WaitForConsoleMessageAsync(action, options);

Аргументы

  • options BrowserContextRunAndWaitForConsoleMessageOptions? (опционально)
    • Predicate Func<ConsoleMessage?, bool> (опционально)#

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

    • Timeout [float]? (опционально)#

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

Возвращает


RunAndWaitForPageAsync

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

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

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

await BrowserContext.RunAndWaitForPageAsync(action, options);

Аргументы

  • action Func<Task> Добавлено в: v1.12#

    Действие, которое вызывает событие.

  • options BrowserContextRunAndWaitForPageOptions? (опционально)

    • Predicate Func<Page?, bool> (опционально)#

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

    • Timeout [float]? (опционально)#

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

Возвращает


WaitForPageAsync

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

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

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

await BrowserContext.WaitForPageAsync(action, options);

Аргументы

  • options BrowserContextRunAndWaitForPageOptions? (опционально)
    • Predicate Func<Page?, bool> (опционально)#

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

    • Timeout [float]? (опционально)#

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

Возвращает


SetDefaultNavigationTimeout

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

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

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

BrowserContext.SetDefaultNavigationTimeout(timeout);

Аргументы

  • timeout [float]#

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


SetDefaultTimeout

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

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

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

BrowserContext.SetDefaultTimeout(timeout);

Аргументы

  • timeout [float]#

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


SetExtraHTTPHeadersAsync

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

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

примечание

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

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

await BrowserContext.SetExtraHTTPHeadersAsync(headers);

Аргументы

  • headers IDictionary<string, string>#

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

Возвращает


SetGeolocationAsync

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

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

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

await context.SetGeolocationAsync(new Geolocation()
{
Latitude = 59.95f,
Longitude = 30.31667f
});
примечание

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

Аргументы

  • geolocation Geolocation?#
    • Latitude [float]

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

    • Longitude [float]

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

    • Accuracy [float]? (опционально)

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

Возвращает


SetOfflineAsync

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

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

await BrowserContext.SetOfflineAsync(offline);

Аргументы

  • offline bool#

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

Возвращает


StorageStateAsync

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

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

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

await BrowserContext.StorageStateAsync(options);

Аргументы

  • options BrowserContextStorageStateOptions? (опционально)
    • IndexedDB bool? (опционально) Добавлено в: v1.51#

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

      примечание

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

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

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

Возвращает


UnrouteAsync

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

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

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

await BrowserContext.UnrouteAsync(url, handler);

Аргументы

  • url string | Regex | Func<string, bool>#

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

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

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

Возвращает


UnrouteAllAsync

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

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

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

await BrowserContext.UnrouteAllAsync(options);

Аргументы

  • options BrowserContextUnrouteAllOptions? (опционально)
    • Behavior enum UnrouteBehavior { Wait, IgnoreErrors, Default }? (опционально)#

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

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

Возвращает


Свойства

APIRequest

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

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

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

BrowserContext.APIRequest

Тип


Clock

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

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

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

BrowserContext.Clock

Тип


Tracing

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

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

BrowserContext.Tracing

Тип


События

event BackgroundPage

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

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

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

context.BackgroundPage += (_, backgroundPage) =>
{
Console.WriteLine(backgroundPage.Url);
};

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

BrowserContext.BackgroundPage += async (_, page) => {};

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


event Close

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

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

  • Контекст браузера закрыт.
  • Приложение браузера закрыто или аварийно завершено.
  • Метод Browser.CloseAsync() был вызван.

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

BrowserContext.Close += async (_, browserContext) => {};

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


event Console

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

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

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

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

context.Console += async (_, msg) =>
{
foreach (var arg in msg.Args)
Console.WriteLine(await arg.JsonValueAsync<object>());
};

await page.EvaluateAsync("console.log('hello', 5, { foo: 'bar' })");

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


событие Dialog

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

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

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

Context.Dialog += async (_, dialog) =>
{
await dialog.AcceptAsync();
};
примечание

Когда нет слушателей Page.Dialog или BrowserContext.Dialog, все диалоги автоматически отклоняются.

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


событие Page

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

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

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

var popup = await context.RunAndWaitForPageAsync(async =>
{
await page.GetByText("open new page").ClickAsync();
});
Console.WriteLine(await popup.EvaluateAsync<string>("location.href"));
примечание

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

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

BrowserContext.Page += async (_, page) => {};

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


событие Request

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

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

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

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

BrowserContext.Request += async (_, request) => {};

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


событие RequestFailed

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

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

примечание

Ответы с HTTP-ошибками, такие как 404 или 503, все еще считаются успешными с точки зрения HTTP, поэтому запрос завершится событием BrowserContext.RequestFinished, а не BrowserContext.RequestFailed.

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

BrowserContext.RequestFailed += async (_, request) => {};

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


событие RequestFinished

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

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

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

BrowserContext.RequestFinished += async (_, request) => {};

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


событие Response

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

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

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

BrowserContext.Response += async (_, response) => {};

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


событие WebError

Добавлено в: v1.38 browserContext.event WebError

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

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

BrowserContext.WebError += async (_, webError) => {};

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