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

Page

Page предоставляет методы для взаимодействия с одной вкладкой в Browser или фоновая страница расширения в Chromium. Один экземпляр Browser может иметь несколько экземпляров Page.

Этот пример создает страницу, переходит на URL и затем сохраняет скриншот:

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

class PageExamples
{
public static async Task Run()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.theverge.com");
await page.ScreenshotAsync(new() { Path = "theverge.png" });
}
}

Класс Page генерирует различные события (описанные ниже), которые могут быть обработаны с использованием любых методов нативного EventEmitter Node, таких как on, once или removeListener.

Этот пример выводит сообщение для одного события загрузки страницы load:

page.Load += (_, _) => Console.WriteLine("Page loaded!");

Чтобы отписаться от событий, используйте метод removeListener:

void PageLoadHandler(object _, IPage p) {
Console.WriteLine("Page loaded!");
};

page.Load += PageLoadHandler;
// Выполните некоторую работу...
page.Load -= PageLoadHandler;

Методы

AddInitScriptAsync

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

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

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

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

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

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

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

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

Аргументы

  • script string | string#

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

Возвращает


AddLocatorHandlerAsync

Добавлено в: v1.42 page.AddLocatorHandlerAsync

При тестировании веб-страницы иногда появляются неожиданные наложения, такие как диалог "Зарегистрироваться", которые блокируют действия, которые вы хотите автоматизировать, например, нажатие кнопки. Эти наложения не всегда появляются одинаково или в одно и то же время, что делает их сложными для обработки в автоматизированных тестах.

Этот метод позволяет вам настроить специальную функцию, называемую обработчиком, которая активируется, когда обнаруживает, что наложение видно. Задача обработчика - удалить наложение, позволяя вашему тесту продолжаться так, как будто наложения не было.

Вещи, которые нужно учитывать:

  • Когда наложение показывается предсказуемо, мы рекомендуем явно ожидать его в вашем тесте и отклонять его как часть вашего обычного тестового потока, вместо использования Page.AddLocatorHandlerAsync().
  • Playwright проверяет наличие наложения каждый раз перед выполнением или повторной попыткой действия, требующего проверки возможности действия, или перед выполнением проверки с автоматическим ожиданием. Когда наложение видно, Playwright сначала вызывает обработчик, а затем продолжает действие/проверку. Обратите внимание, что обработчик вызывается только при выполнении действия/проверки - если наложение становится видимым, но вы не выполняете никаких действий, обработчик не будет вызван.
  • После выполнения обработчика Playwright убедится, что наложение, вызвавшее обработчик, больше не видно. Вы можете отказаться от этого поведения с помощью NoWaitAfter.
  • Время выполнения обработчика учитывается в тайм-ауте действия/проверки, которое вызвало обработчик. Если ваш обработчик занимает слишком много времени, это может вызвать тайм-ауты.
  • Вы можете зарегистрировать несколько обработчиков. Однако в любой момент времени будет выполняться только один обработчик. Убедитесь, что действия внутри обработчика не зависят от другого обработчика.
warning

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

Например, рассмотрим тест, который вызывает Locator.FocusAsync() с последующим Keyboard.PressAsync(). Если ваш обработчик нажимает кнопку между этими двумя действиями, фокусированный элемент, скорее всего, будет неправильным, и нажатие клавиши произойдет на неожиданном элементе. Используйте Locator.PressAsync(), чтобы избежать этой проблемы.

Другой пример - серия действий с мышью, где Mouse.MoveAsync() следует за Mouse.DownAsync(). Опять же, когда обработчик выполняется между этими двумя действиями, позиция мыши будет неправильной во время нажатия мыши. Предпочитайте автономные действия, такие как Locator.ClickAsync(), которые не зависят от неизменности состояния, измененного обработчиком.

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

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

// Настройте обработчик.
await page.AddLocatorHandlerAsync(page.GetByText("Sign up to the newsletter"), async () => {
await page.GetByRole(AriaRole.Button, new() { Name = "No thanks" }).ClickAsync();
});

// Напишите тест как обычно.
await page.GotoAsync("https://example.com");
await page.GetByRole("button", new() { Name = "Start here" }).ClickAsync();

Пример, который пропускает страницу "Подтвердите свои данные безопасности", когда она отображается:

// Настройте обработчик.
await page.AddLocatorHandlerAsync(page.GetByText("Confirm your security details"), async () => {
await page.GetByRole(AriaRole.Button, new() { Name = "Remind me later" }).ClickAsync();
});

// Напишите тест как обычно.
await page.GotoAsync("https://example.com");
await page.GetByRole("button", new() { Name = "Start here" }).ClickAsync();

Пример с пользовательским обратным вызовом на каждой проверке возможности действия. Он использует локатор <body>, который всегда виден, поэтому обработчик вызывается перед каждой проверкой возможности действия. Важно указать NoWaitAfter, потому что обработчик не скрывает элемент <body>.

// Настройте обработчик.
await page.AddLocatorHandlerAsync(page.Locator("body"), async () => {
await page.EvaluateAsync("window.removeObstructionsForTestIfNeeded()");
}, new() { NoWaitAfter = true });

// Напишите тест как обычно.
await page.GotoAsync("https://example.com");
await page.GetByRole("button", new() { Name = "Start here" }).ClickAsync();

Обработчик принимает оригинальный локатор в качестве аргумента. Вы также можете автоматически удалить обработчик после определенного количества вызовов, установив Times:

await page.AddLocatorHandlerAsync(page.GetByText("Sign up to the newsletter"), async locator => {
await locator.ClickAsync();
}, new() { Times = 1 });

Аргументы

  • locator Locator#

    Локатор, который вызывает обработчик.

  • handler Func<Locator, Task>#

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

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

    • NoWaitAfter bool? (опционально) Добавлено в: v1.44#

      По умолчанию, после вызова обработчика Playwright будет ждать, пока наложение не станет скрытым, и только затем продолжит действие/проверку, вызвавшую обработчик. Эта опция позволяет отказаться от этого поведения, чтобы наложение могло оставаться видимым после выполнения обработчика.

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

      Указывает максимальное количество раз, которое этот обработчик должен быть вызван. По умолчанию не ограничено.

Возвращает


AddScriptTagAsync

Добавлено до v1.9 page.AddScriptTagAsync

Добавляет тег <script> на страницу с желаемым URL или содержимым. Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.

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

await Page.AddScriptTagAsync(options);

Аргументы

  • options PageAddScriptTagOptions? (опционально)
    • Content string? (опционально)#

      Сырой JavaScript-контент для внедрения в фрейм.

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

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

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

      Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.

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

      URL скрипта, который нужно добавить.

Возвращает


AddStyleTagAsync

Добавлено до v1.9 page.AddStyleTagAsync

Добавляет тег <link rel="stylesheet"> на страницу с желаемым URL или тег <style type="text/css"> с содержимым. Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS-контент был внедрен в фрейм.

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

await Page.AddStyleTagAsync(options);

Аргументы

  • options PageAddStyleTagOptions? (опционально)
    • Content string? (опционально)#

      Сырой CSS-контент для внедрения в фрейм.

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

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

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

      URL тега <link>.

Возвращает


BringToFrontAsync

Добавлено до v1.9 page.BringToFrontAsync

Выводит страницу на передний план (активирует вкладку).

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

await Page.BringToFrontAsync();

Возвращает


CloseAsync

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

Если RunBeforeUnload равен false, не выполняет никакие обработчики выгрузки и ждет, пока страница не будет закрыта. Если RunBeforeUnload равен true, метод выполнит обработчики выгрузки, но не будет ждать закрытия страницы.

По умолчанию, page.close() не выполняет обработчики beforeunload.

примечание

если RunBeforeUnload передан как true, может быть вызван диалог beforeunload, который должен быть обработан вручную через событие Page.Dialog.

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

await Page.CloseAsync(options);

Аргументы

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

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

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

      По умолчанию false. Выполнять ли обработчики страницы before unload.

Возвращает


ContentAsync

Добавлено до v1.9 page.ContentAsync

Получает полный HTML-контент страницы, включая doctype.

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

await Page.ContentAsync();

Возвращает


Context

Добавлено до v1.9 page.Context

Получает контекст браузера, к которому принадлежит страница.

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

Page.Context

Возвращает


DragAndDropAsync

Добавлено в: v1.13 page.DragAndDropAsync

Этот метод перетаскивает исходный элемент на целевой элемент. Сначала он перемещается к исходному элементу, выполняет mousedown, затем перемещается к целевому элементу и выполняет mouseup.

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

await Page.DragAndDropAsync("#source", "#target");
// или укажите точные позиции относительно верхнего левого угла элементов:
await Page.DragAndDropAsync("#source", "#target", new()
{
SourcePosition = new() { X = 34, Y = 7 },
TargetPosition = new() { X = 10, Y = 20 },
});

Аргументы

  • source string#

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

  • target string#

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

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

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

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

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Кликает на исходный элемент в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

      • X [float]

      • Y [float]

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

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

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

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

      Если установлено, этот метод выполняет только проверки возможности действия и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.

Возвращает


EmulateMediaAsync

Добавлено до v1.9 page.EmulateMediaAsync

Этот метод изменяет CSS media type через аргумент media и/или медиа-функцию 'prefers-colors-scheme', используя аргумент colorScheme.

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

await page.EvaluateAsync("() => matchMedia('screen').matches");
// → true
await page.EvaluateAsync("() => matchMedia('print').matches");
// → false

await page.EmulateMediaAsync(new() { Media = Media.Print });
await page.EvaluateAsync("() => matchMedia('screen').matches");
// → false
await page.EvaluateAsync("() => matchMedia('print').matches");
// → true

await page.EmulateMediaAsync(new() { Media = Media.Screen });
await page.EvaluateAsync("() => matchMedia('screen').matches");
// → true
await page.EvaluateAsync("() => matchMedia('print').matches");
// → false
await page.EmulateMediaAsync(new() { ColorScheme = ColorScheme.Dark });
await page.EvaluateAsync("matchMedia('(prefers-color-scheme: dark)').matches");
// → true
await page.EvaluateAsync("matchMedia('(prefers-color-scheme: light)').matches");
// → false

Аргументы

  • options PageEmulateMediaOptions? (опционально)
    • ColorScheme enum ColorScheme { Light, Dark, NoPreference, Null }? (опционально) Добавлено в: v1.9#

      Эмулирует медиа-функцию prefers-colors-scheme, поддерживаемые значения: 'light' и 'dark'. Передача 'Null' отключает эмуляцию цветовой схемы. 'no-preference' устарело.

    • Contrast enum Contrast { NoPreference, More, Null }? (опционально) Добавлено в: v1.51#

    • ForcedColors enum ForcedColors { Active, None, Null }? (опционально) Добавлено в: v1.15#

    • Media enum Media { Screen, Print, Null }? (опционально) Добавлено в: v1.9#

      Изменяет CSS media type страницы. Единственные допустимые значения: 'Screen', 'Print' и 'Null'. Передача 'Null' отключает эмуляцию CSS media.

    • ReducedMotion enum ReducedMotion { Reduce, NoPreference, Null }? (опционально) Добавлено в: v1.12#

      Эмулирует медиа-функцию 'prefers-reduced-motion', поддерживаемые значения: 'reduce', 'no-preference'. Передача null отключает эмуляцию уменьшенного движения.

Возвращает


EvaluateAsync

Добавлено до v1.9 page.EvaluateAsync

Возвращает значение вызова выражения.

Если функция, переданная в Page.EvaluateAsync(), возвращает Promise, то Page.EvaluateAsync() будет ждать разрешения промиса и вернет его значение.

Если функция, переданная в Page.EvaluateAsync(), возвращает не-Serializable значение, то Page.EvaluateAsync() разрешается в undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON: -0, NaN, Infinity, -Infinity.

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

Передача аргумента в выражение:

var result = await page.EvaluateAsync<int>("([x, y]) => Promise.resolve(x * y)", new[] { 7, 8 });
Console.WriteLine(result);

Также можно передать строку вместо функции:

Console.WriteLine(await page.EvaluateAsync<int>("1 + 2")); // выводит "3"

Экземпляры ElementHandle могут быть переданы в качестве аргумента в Page.EvaluateAsync():

var bodyHandle = await page.EvaluateAsync("document.body");
var html = await page.EvaluateAsync<string>("([body, suffix]) => body.innerHTML + suffix", new object [] { bodyHandle, "hello" });
await bodyHandle.DisposeAsync();

Аргументы

  • expression string#

    JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

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

    Необязательный аргумент для передачи в выражение.

Возвращает

  • [object]#

EvaluateHandleAsync

Добавлено до v1.9 page.EvaluateHandleAsync

Возвращает значение вызова выражения в виде JSHandle.

Единственное отличие между Page.EvaluateAsync() и Page.EvaluateHandleAsync() заключается в том, что Page.EvaluateHandleAsync() возвращает JSHandle.

Если функция, переданная в Page.EvaluateHandleAsync(), возвращает Promise, то Page.EvaluateHandleAsync() будет ждать разрешения промиса и вернет его значение.

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

// Обработчик для объекта window.
var aWindowHandle = await page.EvaluateHandleAsync("() => Promise.resolve(window)");

Также можно передать строку вместо функции:

var docHandle = await page.EvaluateHandleAsync("document"); // Обработчик для `document`

Экземпляры JSHandle могут быть переданы в качестве аргумента в Page.EvaluateHandleAsync():

var handle = await page.EvaluateHandleAsync("() => document.body");
var resultHandle = await page.EvaluateHandleAsync("([body, suffix]) => body.innerHTML + suffix", new object[] { handle, "hello" });
Console.WriteLine(await resultHandle.JsonValueAsync<string>());
await resultHandle.DisposeAsync();

Аргументы

  • expression string#

    JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

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

    Необязательный аргумент для передачи в выражение.

Возвращает


ExposeBindingAsync

Добавлено до версии v1.9 page.ExposeBindingAsync

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

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

Смотрите BrowserContext.ExposeBindingAsync() для версии, охватывающей весь контекст.

примечание

Функции, установленные через Page.ExposeBindingAsync(), сохраняются при навигации.

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

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

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

class PageExamples
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync(new()
{
Headless = false,
});
var page = await browser.NewPageAsync();

await page.ExposeBindingAsync("pageUrl", (source) => source.Page.Url);
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.ClickAsync("button");
}
}

Аргументы

  • name string#

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

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

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

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

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

      Устарело

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

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

Возвращает


ExposeFunctionAsync

Добавлено до версии v1.9 page.ExposeFunctionAsync

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

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

Смотрите BrowserContext.ExposeFunctionAsync() для функции, охватывающей весь контекст.

примечание

Функции, установленные через Page.ExposeFunctionAsync(), сохраняются при навигации.

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

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

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

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

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

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.ClickAsync("button");
Console.WriteLine(await page.TextContentAsync("div"));
}
}

Аргументы

  • name string#

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

  • callback Action<T, [TResult]>#

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

Возвращает


Frame

Добавлено до версии v1.9 page.Frame

Возвращает фрейм, соответствующий указанным критериям. Должно быть указано либо name, либо url.

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

var frame = page.Frame("frame-name");
var frame = page.FrameByUrl(".*domain.*");

Аргументы

  • name string Добавлено в: v1.9#

    Имя фрейма, указанное в атрибуте name тега iframe.

Возвращает


FrameByUrl

Добавлено в: v1.9 page.FrameByUrl

Возвращает фрейм с соответствующим URL.

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

Page.FrameByUrl(url);

Аргументы

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

    Глобальный шаблон, регулярное выражение или предикат, получающий url фрейма как объект URL.

Возвращает


FrameLocator

Добавлено в: v1.17 page.FrameLocator

При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.

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

Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame, например, <iframe id="my-frame">:

var locator = page.FrameLocator("#my-iframe").GetByText("Submit");
await locator.ClickAsync();

Аргументы

  • selector string#

    Селектор для использования при разрешении DOM элемента.

Возвращает


Frames

Добавлено до версии v1.9 page.Frames

Массив всех фреймов, прикрепленных к странице.

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

Page.Frames

Возвращает


GetByAltText

Добавлено в: v1.27 page.GetByAltText

Позволяет находить элементы по их alt-тексту.

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

Например, этот метод найдет изображение по alt-тексту "Playwright logo":

<img alt='Playwright logo'>
await page.GetByAltText("Playwright logo").ClickAsync();

Аргументы

  • text string | Regex#

    Текст для поиска элемента.

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

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

      Искать ли точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.

Возвращает


GetByLabel

Добавлено в: v1.27 page.GetByLabel

Позволяет находить элементы ввода по тексту связанного <label> или элемента aria-labelledby, или по атрибуту aria-label.

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

Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:

<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
await page.GetByLabel("Username").FillAsync("john");
await page.GetByLabel("Password").FillAsync("secret");

Аргументы

  • text string | Regex#

    Текст для поиска элемента.

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

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

      Искать ли точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.

Возвращает


GetByPlaceholder

Добавлено в: v1.27 page.GetByPlaceholder

Позволяет находить элементы ввода по тексту-заполнителю.

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

Например, рассмотрим следующую структуру DOM.

<input type="email" placeholder="name@example.com" />

Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:

await page
.GetByPlaceholder("name@example.com")
.FillAsync("playwright@microsoft.com");

Аргументы

  • text string | Regex#

    Текст для поиска элемента.

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

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

      Искать ли точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.

Возвращает


GetByRole

Добавлено в: v1.27 page.GetByRole

Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.

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

Рассмотрим следующую структуру DOM.

<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>

Вы можете найти каждый элемент по его неявной роли:

await Expect(Page
.GetByRole(AriaRole.Heading, new() { Name = "Sign up" }))
.ToBeVisibleAsync();

await page
.GetByRole(AriaRole.Checkbox, new() { Name = "Subscribe" })
.CheckAsync();

await page
.GetByRole(AriaRole.Button, new() {
NameRegex = new Regex("submit", RegexOptions.IgnoreCase)
})
.ClickAsync();

Аргументы

  • role enum AriaRole { Alert, Alertdialog, Application, Article, Banner, Blockquote, Button, Caption, Cell, Checkbox, Code, Columnheader, Combobox, Complementary, Contentinfo, Definition, Deletion, Dialog, Directory, Document, Emphasis, Feed, Figure, Form, Generic, Grid, Gridcell, Group, Heading, Img, Insertion, Link, List, Listbox, Listitem, Log, Main, Marquee, Math, Meter, Menu, Menubar, Menuitem, Menuitemcheckbox, Menuitemradio, Navigation, None, Note, Option, Paragraph, Presentation, Progressbar, Radio, Radiogroup, Region, Row, Rowgroup, Rowheader, Scrollbar, Search, Searchbox, Separator, Slider, Spinbutton, Status, Strong, Subscript, Superscript, Switch, Tab, Table, Tablist, Tabpanel, Term, Textbox, Time, Timer, Toolbar, Tooltip, Tree, Treegrid, Treeitem }#

    Требуемая ARIA роль.

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

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

      Атрибут, который обычно устанавливается aria-checked или нативными элементами <input type=checkbox>.

      Узнайте больше о aria-checked.

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

      Атрибут, который обычно устанавливается aria-disabled или disabled.

      примечание

      В отличие от большинства других атрибутов, disabled наследуется через иерархию DOM. Узнайте больше о aria-disabled.

    • Exact bool? (опционально) Добавлено в: v1.28#

      Совпадает ли Name|NameRegex точно: с учетом регистра и всей строки. По умолчанию false. Игнорируется, когда Name|NameRegex является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.

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

      Атрибут, который обычно устанавливается aria-expanded.

      Узнайте больше о aria-expanded.

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

      Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.

      Узнайте больше о aria-hidden.

    • Level int? (опционально)#

      Числовой атрибут, который обычно присутствует для ролей heading, listitem, row, treeitem, с значениями по умолчанию для элементов <h1>-<h6>.

      Узнайте больше о aria-level.

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

      Опция для соответствия доступному имени. По умолчанию, соответствие не учитывает регистр и ищет подстроку, используйте Exact для управления этим поведением.

      Узнайте больше о доступном имени.

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

      Атрибут, который обычно устанавливается aria-pressed.

      Узнайте больше о aria-pressed.

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

      Атрибут, который обычно устанавливается aria-selected.

      Узнайте больше о aria-selected.

Возвращает

Детали

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

Многие HTML элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Руководства ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role и/или aria-* атрибуты на значения по умолчанию.


GetByTestId

Добавлено в: v1.27 page.GetByTestId

Находит элемент по тестовому идентификатору.

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

Рассмотрим следующую структуру DOM.

<button data-testid="directions">Itinéraire</button>

Вы можете найти элемент по его тестовому идентификатору:

await page.GetByTestId("directions").ClickAsync();

Аргументы

  • testId string | Regex#

    Идентификатор для поиска элемента.

Возвращает

Детали

По умолчанию используется атрибут data-testid в качестве тестового идентификатора. Используйте Selectors.SetTestIdAttribute() для настройки другого атрибута тестового идентификатора, если это необходимо.


GetByText

Добавлено в: v1.27 page.GetByText

Позволяет находить элементы, содержащие заданный текст.

Смотрите также Locator.Filter(), который позволяет сопоставлять по другим критериям, таким как доступная роль, а затем фильтровать по текстовому содержимому.

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

Рассмотрим следующую структуру DOM:

<div>Hello <span>world</span></div>
<div>Hello</div>

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

// Соответствует <span>
page.GetByText("world");

// Соответствует первому <div>
page.GetByText("Hello world");

// Соответствует второму <div>
page.GetByText("Hello", new() { Exact = true });

// Соответствует обоим <div>
page.GetByText(new Regex("Hello"));

// Соответствует второму <div>
page.GetByText(new Regex("^hello$", RegexOptions.IgnoreCase));

Аргументы

  • text string | Regex#

    Текст для поиска элемента.

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

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

      Искать ли точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.

Возвращает

Детали

Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.

Элементы ввода типа button и submit сопоставляются по их value, а не по текстовому содержимому. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.


GetByTitle

Добавлено в: v1.27 page.GetByTitle

Позволяет находить элементы по их атрибуту title.

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

Рассмотрим следующую структуру DOM.

<span title='Issues count'>25 issues</span>

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

await Expect(Page.GetByTitle("Issues count")).toHaveText("25 issues");

Аргументы

  • text string | Regex#

    Текст для поиска элемента.

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

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

      Искать точное совпадение: с учетом регистра и всей строки. По умолчанию false. Игнорируется при поиске по регулярному выражению. Обратите внимание, что точное совпадение все равно обрезает пробелы.

Возвращает


GoBackAsync

Добавлено до v1.9 page.GoBackAsync

Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления. Если невозможно вернуться назад, возвращает null.

Переход на предыдущую страницу в истории.

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

await Page.GoBackAsync(options);

Аргументы

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


GoForwardAsync

Добавлено до v1.9 page.GoForwardAsync

Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления. Если невозможно перейти вперед, возвращает null.

Переход на следующую страницу в истории.

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

await Page.GoForwardAsync(options);

Аргументы

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


GotoAsync

Добавлено до v1.9 page.GotoAsync

Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с первым не перенаправленным ответом.

Метод вызовет ошибку, если:

  • произошла ошибка SSL (например, в случае самоподписанных сертификатов).
  • целевой URL недействителен.
  • Timeout превышен во время навигации.
  • удаленный сервер не отвечает или недоступен.
  • основной ресурс не удалось загрузить.

Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый HTTP-код состояния, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав Response.Status.

примечание

Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения - это навигация на about:blank или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null.

примечание

Режим без головы не поддерживает навигацию к PDF-документу. См. проблему.

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

await Page.GotoAsync(url, options);

Аргументы

  • url string#

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

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

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

      Значение заголовка Referer. Если предоставлено, оно будет иметь приоритет над значением заголовка referer, установленным с помощью Page.SetExtraHTTPHeadersAsync().

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


IsClosed

Добавлено до v1.9 page.IsClosed

Указывает, что страница была закрыта.

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

Page.IsClosed

Возвращает


Locator

Добавлено в: v1.14 page.Locator

Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице/фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.

Узнайте больше о локаторах.

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

Page.Locator(selector, options);

Аргументы

  • selector string#

    Селектор для использования при разрешении элемента DOM.

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

    • Has Locator? (опционально)#

      Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например, article, который имеет text=Playwright, соответствует <article><div>Playwright</div></article>.

      Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти content, который имеет div в <article><content><div>Playwright</div></content></article>. Однако поиск content, который имеет article div, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределами content.

      Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.

    • HasNot Locator? (опционально) Добавлено в: v1.33#

      Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например, article, который не имеет div, соответствует <article><span>Playwright</span></article>.

      Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.

    • HasNotText|HasNotTextRegex string? | Regex? (опционально) Добавлено в: v1.33#

      Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string совпадение не учитывает регистр и ищет подстроку.

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

      Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string совпадение не учитывает регистр и ищет подстроку. Например, "Playwright" соответствует <article><div>Playwright</div></article>.

Возвращает


MainFrame

Добавлено до v1.9 page.MainFrame

Основной фрейм страницы. Страница гарантированно имеет основной фрейм, который сохраняется во время навигации.

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

Page.MainFrame

Возвращает


OpenerAsync

Добавлено до v1.9 page.OpenerAsync

Возвращает открыватель для всплывающих страниц и null для других. Если открыватель уже был закрыт, возвращает null.

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

await Page.OpenerAsync();

Возвращает


PauseAsync

Добавлено в: v1.9 page.PauseAsync

Приостанавливает выполнение скрипта. Playwright остановит выполнение скрипта и будет ждать, пока пользователь не нажмет кнопку 'Resume' в оверлее страницы или не вызовет playwright.resume() в консоли DevTools.

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

примечание

Этот метод требует, чтобы Playwright был запущен в режиме с интерфейсом, с ложным значением опции Headless.

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

await Page.PauseAsync();

Возвращает


PdfAsync

Добавлено до v1.9 page.PdfAsync

Возвращает буфер PDF.

page.pdf() генерирует PDF страницы с использованием CSS медиа print. Чтобы сгенерировать PDF с медиа screen, вызовите Page.EmulateMediaAsync() перед вызовом page.pdf():

примечание

По умолчанию page.pdf() генерирует PDF с измененными цветами для печати. Используйте свойство -webkit-print-color-adjust, чтобы принудительно отобразить точные цвета.

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

// Генерирует PDF с медиа-типом 'screen'
await page.EmulateMediaAsync(new() { Media = Media.Screen });
await page.PdfAsync(new() { Path = "page.pdf" });

Опции Width, Height и Margin принимают значения с указанием единиц измерения. Значения без указания единиц измерения считаются пикселями.

Несколько примеров:

  • page.pdf({width: 100}) - печатает с шириной, установленной в 100 пикселей
  • page.pdf({width: '100px'}) - печатает с шириной, установленной в 100 пикселей
  • page.pdf({width: '10cm'}) - печатает с шириной, установленной в 10 сантиметров.

Все возможные единицы измерения:

  • px - пиксель
  • in - дюйм
  • cm - сантиметр
  • mm - миллиметр

Опции Format:

  • Letter: 8.5in x 11in
  • Legal: 8.5in x 14in
  • Tabloid: 11in x 17in
  • Ledger: 17in x 11in
  • A0: 33.1in x 46.8in
  • A1: 23.4in x 33.1in
  • A2: 16.54in x 23.4in
  • A3: 11.7in x 16.54in
  • A4: 8.27in x 11.7in
  • A5: 5.83in x 8.27in
  • A6: 4.13in x 5.83in
примечание

Разметка HeaderTemplate и FooterTemplate имеет следующие ограничения: > 1. Теги скриптов внутри шаблонов не выполняются. > 2. Стили страницы не видны внутри шаблонов.

Аргументы

  • options PagePdfOptions? (опционально)
    • DisplayHeaderFooter bool? (опционально)#

      Отображать заголовок и нижний колонтитул. По умолчанию false.

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

      HTML-шаблон для нижнего колонтитула печати. Должен использовать тот же формат, что и HeaderTemplate.

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

      Формат бумаги. Если установлен, имеет приоритет над опциями Width или Height. По умолчанию 'Letter'.

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

      HTML-шаблон для заголовка печати. Должен быть допустимой HTML-разметкой с использованием следующих классов для вставки значений печати:

      • 'date' отформатированная дата печати
      • 'title' заголовок документа
      • 'url' местоположение документа
      • 'pageNumber' номер текущей страницы
      • 'totalPages' общее количество страниц в документе
    • Height string? (опционально)#

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

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

      Ориентация бумаги. По умолчанию false.

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

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

        Верхнее поле, принимает значения с указанием единиц измерения. По умолчанию 0.

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

        Правое поле, принимает значения с указанием единиц измерения. По умолчанию 0.

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

        Нижнее поле, принимает значения с указанием единиц измерения. По умолчанию 0.

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

        Левое поле, принимает значения с указанием единиц измерения. По умолчанию 0.

      Поля бумаги, по умолчанию отсутствуют.

    • Outline bool? (опционально) Добавлено в: v1.42#

      Включать ли контур документа в PDF. По умолчанию false.

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

      Диапазоны страниц для печати, например, '1-5, 8, 11-13'. По умолчанию пустая строка, что означает печать всех страниц.

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

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

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

      Давать приоритет любому размеру @page, объявленному в CSS страницы, над тем, что указано в опциях Width и Height или Format. По умолчанию false, что будет масштабировать содержимое, чтобы оно соответствовало размеру бумаги.

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

      Печать фоновой графики. По умолчанию false.

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

      Масштаб рендеринга веб-страницы. По умолчанию 1. Масштаб должен быть между 0.1 и 2.

    • Tagged bool? (опционально) Добавлено в: v1.42#

      Генерировать ли тегированный (доступный) PDF. По умолчанию false.

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

      Ширина бумаги, принимает значения с указанием единиц измерения.

Возвращает


ReloadAsync

Добавлено до v1.9 page.ReloadAsync

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

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

await Page.ReloadAsync(options);

Аргументы

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


RemoveLocatorHandlerAsync

Добавлено в: v1.44 page.RemoveLocatorHandlerAsync

Удаляет все обработчики локаторов, добавленные с помощью Page.AddLocatorHandlerAsync() для конкретного локатора.

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

await Page.RemoveLocatorHandlerAsync(locator);

Аргументы

Возвращает


RequestGCAsync

Добавлено в: v1.48 page.RequestGCAsync

Запрашивает у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что все недоступные объекты будут собраны.

Это полезно для обнаружения утечек памяти. Например, если на вашей странице есть большой объект 'suspect', который может утекать, вы можете проверить, что он не утек, используя WeakRef.

// 1. На вашей странице сохраните WeakRef для "suspect".
await Page.EvaluateAsync("globalThis.suspectWeakRef = new WeakRef(suspect)");
// 2. Запросите сборку мусора.
await Page.RequestGCAsync();
// 3. Убедитесь, что weak ref не ссылается на оригинальный объект.
Assert.True(await Page.EvaluateAsync("!globalThis.suspectWeakRef.deref()"));

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

await Page.RequestGCAsync();

Возвращает


RouteAsync

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

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

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

примечание

Обработчик будет вызван только для первого URL, если ответ является перенаправлением.

примечание

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

примечание

Page.RouteAsync() не будет перехватывать первый запрос всплывающей страницы. Используйте BrowserContext.RouteAsync() вместо этого.

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

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

var page = await browser.NewPageAsync();
await page.RouteAsync("**/*.{png,jpg,jpeg}", async r => await r.AbortAsync());
await page.GotoAsync("https://www.microsoft.com");

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

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

Возможно исследовать запрос, чтобы решить, какое действие маршрута выполнить. Например, имитировать все запросы, содержащие некоторые данные 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();
});

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

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

примечание

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

Аргументы

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

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

  • handler Action<Route>#

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

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

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

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

Возвращает


RouteFromHARAsync

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

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

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

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

await Page.RouteFromHARAsync(har, options);

Аргументы

  • har string#

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

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

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

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

      По умолчанию - abort.

    • 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 page.RouteWebSocketAsync

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

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

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

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

await page.RouteWebSocketAsync("/ws", ws => {
ws.OnMessage(frame => {
if (frame.Text == "request")
ws.Send("response");
});
});

Аргументы

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

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

  • handler Action<WebSocketRoute>#

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

Возвращает


RunAndWaitForConsoleMessageAsync

Добавлено в: v1.9 page.RunAndWaitForConsoleMessageAsync

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

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

await Page.RunAndWaitForConsoleMessageAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForConsoleMessageAsync

Добавлено в: v1.9 page.WaitForConsoleMessageAsync

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

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

await Page.WaitForConsoleMessageAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForDownloadAsync

Добавлено в: v1.9 page.RunAndWaitForDownloadAsync

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

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

await Page.RunAndWaitForDownloadAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForDownloadAsync

Добавлено в: v1.9 page.WaitForDownloadAsync

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

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

await Page.WaitForDownloadAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForFileChooserAsync

Добавлено в: v1.9 page.RunAndWaitForFileChooserAsync

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

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

await Page.RunAndWaitForFileChooserAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForFileChooserAsync

Добавлено в: v1.9 page.WaitForFileChooserAsync

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

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

await Page.WaitForFileChooserAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForPopupAsync

Добавлено в: v1.9 page.RunAndWaitForPopupAsync

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

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

await Page.RunAndWaitForPopupAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForPopupAsync

Добавлено в: v1.9 page.WaitForPopupAsync

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

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

await Page.WaitForPopupAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForRequestAsync

Добавлено до v1.9 page.RunAndWaitForRequestAsync

Ожидает совпадения запроса и возвращает его. Подробнее о событиях читайте в разделе ожидание события.

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

// Ожидает следующего запроса с указанным URL.
await page.RunAndWaitForRequestAsync(async () =>
{
await page.GetByText("trigger request").ClickAsync();
}, "http://example.com/resource");

// Альтернативный способ с предикатом.
await page.RunAndWaitForRequestAsync(async () =>
{
await page.GetByText("trigger request").ClickAsync();
}, request => request.Url == "https://example.com" && request.Method == "GET");

Аргументы

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

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

  • urlOrPredicate string | Regex | Func<Request, bool>#

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

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

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

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

Возвращает


WaitForRequestAsync

Добавлено до v1.9 page.WaitForRequestAsync

Ожидает совпадения запроса и возвращает его. Подробнее о событиях читайте в разделе ожидание события.

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

// Ожидает следующего запроса с указанным URL.
await page.RunAndWaitForRequestAsync(async () =>
{
await page.GetByText("trigger request").ClickAsync();
}, "http://example.com/resource");

// Альтернативный способ с предикатом.
await page.RunAndWaitForRequestAsync(async () =>
{
await page.GetByText("trigger request").ClickAsync();
}, request => request.Url == "https://example.com" && request.Method == "GET");

Аргументы

  • urlOrPredicate string | Regex | Func<Request, bool>#

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

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

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

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

Возвращает


RunAndWaitForRequestFinishedAsync

Добавлено в: v1.12 page.RunAndWaitForRequestFinishedAsync

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

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

await Page.RunAndWaitForRequestFinishedAsync(action, options);

Аргументы

  • action Func<Task>#

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

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

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

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

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

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

Возвращает


WaitForRequestFinishedAsync

Добавлено в: v1.12 page.WaitForRequestFinishedAsync

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

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

await Page.WaitForRequestFinishedAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForResponseAsync

Добавлено до v1.9 page.RunAndWaitForResponseAsync

Возвращает совпавший ответ. Подробнее о событиях читайте в разделе ожидание события.

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

// Ожидает следующего ответа с указанным URL.
await page.RunAndWaitForResponseAsync(async () =>
{
await page.GetByText("trigger response").ClickAsync();
}, "http://example.com/resource");

// Альтернативный способ с предикатом.
await page.RunAndWaitForResponseAsync(async () =>
{
await page.GetByText("trigger response").ClickAsync();
}, response => response.Url == "https://example.com" && response.Status == 200 && response.Request.Method == "GET");

Аргументы

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

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

  • urlOrPredicate string | Regex | Func<Response, bool>#

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

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

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

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

Возвращает


WaitForResponseAsync

Добавлено до v1.9 page.WaitForResponseAsync

Возвращает совпавший ответ. Подробнее о событиях читайте в разделе ожидание события.

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

// Ожидает следующего ответа с указанным URL.
await page.RunAndWaitForResponseAsync(async () =>
{
await page.GetByText("trigger response").ClickAsync();
}, "http://example.com/resource");

// Альтернативный способ с предикатом.
await page.RunAndWaitForResponseAsync(async () =>
{
await page.GetByText("trigger response").ClickAsync();
}, response => response.Url == "https://example.com" && response.Status == 200 && response.Request.Method == "GET");

Аргументы

  • urlOrPredicate string | Regex | Func<Response, bool>#

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

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

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

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

Возвращает


RunAndWaitForWebSocketAsync

Добавлено в: v1.9 page.RunAndWaitForWebSocketAsync

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

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

await Page.RunAndWaitForWebSocketAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForWebSocketAsync

Добавлено в: v1.9 page.WaitForWebSocketAsync

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

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

await Page.WaitForWebSocketAsync(action, options);

Аргументы

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

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

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

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

Возвращает


RunAndWaitForWorkerAsync

Добавлено в: v1.9 page.RunAndWaitForWorkerAsync

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

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

await Page.RunAndWaitForWorkerAsync(action, options);

Аргументы

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

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

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

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

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

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

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

Возвращает


WaitForWorkerAsync

Добавлено в: v1.9 page.WaitForWorkerAsync

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

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

await Page.WaitForWorkerAsync(action, options);

Аргументы

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

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

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

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

Возвращает


ScreenshotAsync

Добавлено до v1.9 page.ScreenshotAsync

Возвращает буфер с захваченным скриншотом.

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

await Page.ScreenshotAsync(options);

Аргументы

  • options PageScreenshotOptions? (опционально)
    • Animations enum ScreenshotAnimations { Disabled, Allow }? (опционально)#

      При установке в "disabled", останавливает CSS-анимации, CSS-переходы и веб-анимации. Анимации получают разное обращение в зависимости от их продолжительности:

      • конечные анимации быстро перематываются до завершения, чтобы они вызвали событие transitionend.
      • бесконечные анимации отменяются до начального состояния, а затем воспроизводятся после скриншота.

      По умолчанию "allow", что оставляет анимации нетронутыми.

    • Caret enum ScreenshotCaret { Hide, Initial }? (опционально)#

      При установке в "hide", скриншот скроет текстовый курсор. При установке в "initial", поведение текстового курсора не будет изменено. По умолчанию "hide".

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

      • X [float]

        x-координата верхнего левого угла области обрезки

      • Y [float]

        y-координата верхнего левого угла области обрезки

      • Width [float]

        ширина области обрезки

      • Height [float]

        высота области обрезки

      Объект, который указывает обрезку результирующего изображения.

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

      Если true, делает скриншот всей прокручиваемой страницы, вместо текущего видимого окна. По умолчанию false.

    • Mask IEnumerable?<Locator> (опционально)#

      Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут покрыты розовым прямоугольником #FF00FF (настраивается с помощью MaskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Совпадение только с видимыми элементами, чтобы отключить это.

    • MaskColor string? (опционально) Добавлено в: v1.35#

      Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый #FF00FF.

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

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

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

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

    • Quality int? (опционально)#

      Качество изображения, от 0 до 100. Не применимо к изображениям png.

    • Scale enum ScreenshotScale { Css, Device }? (опционально)#

      При установке в "css", скриншот будет иметь один пиксель на каждый css пиксель на странице. Для устройств с высоким разрешением это позволит уменьшить размер скриншотов. Использование опции "device" создаст один пиксель на каждый пиксель устройства, так что скриншоты устройств с высоким разрешением будут в два раза больше или даже больше.

      По умолчанию "device".

    • Style string? (опционально) Добавлено в: v1.41#

      Текст стиля, который будет применен при создании скриншота. Здесь вы можете скрыть динамические элементы, сделать элементы невидимыми или изменить их свойства, чтобы помочь вам создавать повторяемые скриншоты. Этот стиль проникает в Shadow DOM и применяется к внутренним фреймам.

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

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

    • Type enum ScreenshotType { Png, Jpeg }? (опционально)#

      Укажите тип скриншота, по умолчанию png.

Возвращает


SetContentAsync

Добавлено до v1.9 page.SetContentAsync

Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.

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

await Page.SetContentAsync(html, options);

Аргументы

  • html string#

    HTML-разметка для назначения странице.

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

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


SetDefaultNavigationTimeout

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

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

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

Page.SetDefaultNavigationTimeout(timeout);

Аргументы

  • timeout [float]#

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


SetDefaultTimeout

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

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

примечание

Page.SetDefaultNavigationTimeout() имеет приоритет над Page.SetDefaultTimeout().

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

Page.SetDefaultTimeout(timeout);

Аргументы

  • timeout [float]#

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


SetExtraHTTPHeadersAsync

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

Дополнительные HTTP-заголовки будут отправлены с каждым запросом, инициированным страницей.

примечание

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

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

await Page.SetExtraHTTPHeadersAsync(headers);

Аргументы

  • headers IDictionary<string, string>#

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

Возвращает


SetViewportSizeAsync

Добавлено до v1.9 page.SetViewportSizeAsync

В случае нескольких страниц в одном браузере каждая страница может иметь свой собственный размер окна просмотра. Однако Browser.NewContextAsync() позволяет установить размер окна просмотра (и многое другое) для всех страниц в контексте сразу.

Page.SetViewportSizeAsync() изменит размер страницы. Многие веб-сайты не ожидают, что телефоны изменят размер, поэтому вы должны установить размер окна просмотра перед навигацией на страницу. Page.SetViewportSizeAsync() также сбросит размер screen, используйте Browser.NewContextAsync() с параметрами screen и viewport, если вам нужен лучший контроль над этими свойствами.

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

var page = await browser.NewPageAsync();
await page.SetViewportSizeAsync(640, 480);
await page.GotoAsync("https://www.microsoft.com");

Аргументы

  • width int Добавлено в: v1.10#

    Ширина страницы в пикселях.

  • height int Добавлено в: v1.10#

    Высота страницы в пикселях.

Возвращает


TitleAsync

Добавлено до v1.9 page.TitleAsync

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

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

await Page.TitleAsync();

Возвращает


UnrouteAsync

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

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

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

await Page.UnrouteAsync(url, handler);

Аргументы

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

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

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

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

Возвращает


UnrouteAllAsync

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

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

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

await Page.UnrouteAllAsync(options);

Аргументы

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

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

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

Возвращает


Url

Добавлено до v1.9 page.Url

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

Page.Url

Возвращает


Video

Добавлено до v1.9 page.Video

Объект видео, связанный с этой страницей.

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

Page.Video

Возвращает


ViewportSize

Добавлено до v1.9 page.ViewportSize

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

Page.ViewportSize

Возвращает

  • ViewportSize?#
    • width int

      ширина страницы в пикселях.

    • height int

      высота страницы в пикселях.


WaitForFunctionAsync

Добавлено до v1.9 page.WaitForFunctionAsync

Возвращает, когда выражение возвращает истинное значение. Разрешается в JSHandle истинного значения.

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

Page.WaitForFunctionAsync() может быть использован для наблюдения за изменением размера окна просмотра:

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

class FrameExamples
{
public static async Task WaitForFunction()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync();
var page = await browser.NewPageAsync();
await page.SetViewportSizeAsync(50, 50);
await page.MainFrame.WaitForFunctionAsync("window.innerWidth < 100");
}
}

Чтобы передать аргумент в предикат функции Page.WaitForFunctionAsync():

var selector = ".foo";
await page.WaitForFunctionAsync("selector => !!document.querySelector(selector)", selector);

Аргументы

  • expression string#

    JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

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

    Опциональный аргумент для передачи в выражение.

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

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

      Если указано, то это интервал в миллисекундах, с которым функция будет выполняться. По умолчанию, если опция не указана, выражение выполняется в requestAnimationFrame обратном вызове.

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

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

Возвращает


WaitForLoadStateAsync

Добавлено до v1.9 page.WaitForLoadStateAsync

Возвращает, когда достигнуто требуемое состояние загрузки.

Это разрешается, когда страница достигает требуемого состояния загрузки, по умолчанию load. Навигация должна быть завершена, когда этот метод вызывается. Если текущий документ уже достиг требуемого состояния, разрешается немедленно.

примечание

Большую часть времени этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.

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

await page.GetByRole(AriaRole.Button).ClickAsync(); // Клик вызывает навигацию.
await page.WaitForLoadStateAsync(); // Обещание разрешается после события 'load'.
var popup = await page.RunAndWaitForPopupAsync(async () =>
{
await page.GetByRole(AriaRole.Button).ClickAsync(); // клик вызывает всплывающее окно
});
// Ожидание события "DOMContentLoaded".
await popup.WaitForLoadStateAsync(LoadState.DOMContentLoaded);
Console.WriteLine(await popup.TitleAsync()); // всплывающее окно готово к использованию.

Аргументы

  • state enum LoadState { Load, DOMContentLoaded, NetworkIdle }? (опционально)#

    Опциональное состояние загрузки для ожидания, по умолчанию load. Если состояние уже достигнуто при загрузке текущего документа, метод разрешается немедленно. Может быть одним из:

    • 'load' - ожидание, пока событие load не будет вызвано.
    • 'domcontentloaded' - ожидание, пока событие DOMContentLoaded не будет вызвано.
    • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ ожидание, пока не будет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
  • options PageWaitForLoadStateOptions? (опционально)

Возвращает


WaitForURLAsync

Добавлено в: v1.11 page.WaitForURLAsync

Ожидает, пока основной фрейм перейдет на указанный URL.

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

await page.ClickAsync("a.delayed-navigation"); // нажатие на ссылку косвенно вызовет навигацию
await page.WaitForURLAsync("**/target.html");

Аргументы

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

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

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

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

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


Workers

Добавлено до v1.9 page.Workers

Этот метод возвращает всех выделенных WebWorkers, связанных со страницей.

примечание

Это не включает ServiceWorkers

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

Page.Workers

Возвращает


Свойства

APIRequest

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

Помощник для тестирования API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и BrowserContext.APIRequest в контексте страницы. Подробнее см. в BrowserContext.APIRequest.

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

Page.APIRequest

Тип


Clock

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

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

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

Page.Clock

Тип


Keyboard

Добавлено до v1.9 page.Keyboard

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

Page.Keyboard

Тип


Mouse

Добавлено до v1.9 page.Mouse

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

Page.Mouse

Тип


Touchscreen

Добавлено до v1.9 page.Touchscreen

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

Page.Touchscreen

Тип


События

event Close

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

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

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

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

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


event Console

Добавлено до v1.9 page.event Console

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

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

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

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

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

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


event Crash

Добавлено до v1.9 page.event Crash

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

Наиболее распространенный способ справиться с падениями - поймать исключение:

try {
// Падение может произойти во время клика.
await page.ClickAsync("button");
// Или во время ожидания события.
await page.WaitForPopup();
} catch (PlaywrightException e) {
// Когда страница падает, сообщение об исключении содержит "crash".
}

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

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

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


event Dialog

Добавлено до v1.9 page.event Dialog

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

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

page.RequestFailed += (_, request) =>
{
Console.WriteLine(request.Url + " " + request.Failure);
};
примечание

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

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


event DOMContentLoaded

Добавлено в: v1.9 page.event DOMContentLoaded

Вызывается, когда событие JavaScript DOMContentLoaded отправляется.

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

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

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


event Download

Добавлено до v1.9 page.event Download

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

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

Page.Download += async (_, download) => {};

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


event FileChooser

Добавлено в: v1.9 page.event FileChooser

Вызывается, когда предполагается появление выбора файла, например, после нажатия на <input type=file>. Playwright может ответить на это, установив файлы ввода с помощью FileChooser.SetFilesAsync(), которые могут быть загружены после этого.

page.FileChooser += (_, fileChooser) =>
{
fileChooser.SetFilesAsync(@"C:\temp\myfile.pdf");
};

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

Page.FileChooser += async (_, fileChooser) => {};

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


event FrameAttached

Добавлено в: v1.9 page.event FrameAttached

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

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

Page.FrameAttached += async (_, frame) => {};

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


event FrameDetached

Добавлено в: v1.9 page.event FrameDetached

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

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

Page.FrameDetached += async (_, frame) => {};

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


event FrameNavigated

Добавлено в: v1.9 page.event FrameNavigated

Вызывается, когда фрейм переходит на новый URL.

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

Page.FrameNavigated += async (_, frame) => {};

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


event Load

Добавлено до v1.9 page.event Load

Вызывается, когда событие JavaScript load отправляется.

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

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

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


event PageError

Добавлено в: v1.9 page.event PageError

Вызывается, когда на странице происходит необработанное исключение.

// Записывать все необработанные ошибки в терминал
page.PageError += (_, exception) =>
{
Console.WriteLine("Необработанное исключение: " + exception);
};

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

Page.PageError += async (_, value) => {};

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


event Popup

Добавлено до v1.9 page.event Popup

Вызывается, когда страница открывает новую вкладку или окно. Это событие вызывается в дополнение к BrowserContext.Page, но только для всплывающих окон, относящихся к этой странице.

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

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

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

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

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

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


event Request

Добавлено до v1.9 page.event Request

Вызывается, когда страница отправляет запрос. Объект request доступен только для чтения. Чтобы перехватывать и изменять запросы, см. Page.RouteAsync() или BrowserContext.RouteAsync().

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

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

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


event RequestFailed

Добавлено в: v1.9 page.event RequestFailed

Вызывается, когда запрос не удается, например, из-за истечения времени ожидания.

примечание

Ответы с ошибками HTTP, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием Page.RequestFinished, а не Page.RequestFailed. Запрос будет считаться неудачным только в том случае, если клиент не может получить HTTP-ответ от сервера, например, из-за сетевой ошибки net::ERR_FAILED.

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

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

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


event RequestFinished

Добавлено в: v1.9 page.event RequestFinished

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

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

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

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


event Response

Добавлено до v1.9 page.event Response

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

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

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

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


event WebSocket

Добавлено в: v1.9 page.event WebSocket

Вызывается, когда отправляется запрос WebSocket.

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

Page.WebSocket += async (_, webSocket) => {};

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


event Worker

Добавлено до v1.9 page.event Worker

Вызывается, когда выделенный WebWorker запускается страницей.

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

Page.Worker += async (_, worker) => {};

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


Устаревшие

Accessibility

Добавлено до v1.9 page.Accessibility
Устарело

Это свойство не рекомендуется использовать. Пожалуйста, используйте другие библиотеки, такие как Axe, если вам нужно тестировать доступность страницы. См. наш руководство по интеграции с Axe для Node.js.

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

Page.Accessibility

Тип


CheckAsync

Добавлено до v1.9 page.CheckAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.CheckAsync() вместо этого. Подробнее о локаторах.

Этот метод проверяет элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает управление немедленно.
  3. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте Page.Mouse для нажатия в центре элемента.
  6. Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.

Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.

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

await Page.CheckAsync(selector, options);

Аргументы

  • selector string#

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

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

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

      Нужно ли обходить проверки действительности. По умолчанию false.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения.

Возвращает


ClickAsync

Добавлено до v1.9 page.ClickAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.ClickAsync() вместо этого. Подробнее о локаторах.

Этот метод кликает по элементу, соответствующему селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для нажатия в центре элемента или в указанной позиции.
  5. Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция NoWaitAfter.

Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.

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

await Page.ClickAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Button enum MouseButton { Left, Right, Middle }? (опционально)#

      По умолчанию left.

    • ClickCount int? (опционально)#

      По умолчанию 1. См. UIEvent.detail.

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

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

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

      Нужно ли обходить проверки действительности. По умолчанию false.

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения. Обратите внимание, что клавиатурные модификаторы будут нажаты независимо от trial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.

Возвращает


DblClickAsync

Добавлено до v1.9 page.DblClickAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.DblClickAsync() вместо этого. Подробнее о локаторах.

Этот метод выполняет двойной клик по элементу, соответствующему селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для двойного клика в центре элемента или в указанной позиции.

Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.

примечание

page.dblclick() генерирует два события click и одно событие dblclick.

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

await Page.DblClickAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Button enum MouseButton { Left, Right, Middle }? (опционально)#

      По умолчанию left.

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

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

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

      Нужно ли обходить проверки действительности. По умолчанию false.

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения. Обратите внимание, что клавиатурные модификаторы будут нажаты независимо от trial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.

Возвращает


DispatchEventAsync

Добавлено до v1.9 page.DispatchEventAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.DispatchEventAsync() вместо этого. Подробнее о локаторах.

Пример ниже отправляет событие click на элемент. Независимо от состояния видимости элемента, click отправляется. Это эквивалентно вызову element.click().

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

await page.DispatchEventAsync("button#submit", "click");

Внутри создается экземпляр события на основе указанного типа, инициализируется с помощью свойств eventInit и отправляется на элемент. События по умолчанию composed, cancelable и всплывают.

Поскольку eventInit является специфичным для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:

Вы также можете указать JSHandle в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:

var dataTransfer = await page.EvaluateHandleAsync("() => new DataTransfer()");
await page.DispatchEventAsync("#source", "dragstart", new { dataTransfer });

Аргументы

  • selector string#

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

  • type string#

    Тип DOM-события: "click", "dragstart" и т.д.

  • eventInit EvaluationArgument? (опционально)#

    Опциональные свойства инициализации, специфичные для события.

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


EvalOnSelectorAsync

Добавлено в: v1.9 page.EvalOnSelectorAsync
Не рекомендуется

Этот метод не ожидает, пока элемент пройдет проверки действительности, и поэтому может привести к нестабильным тестам. Используйте Locator.EvaluateAsync(), другие вспомогательные методы Locator или утверждения с приоритетом на веб вместо этого.

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

Если выражение возвращает Promise, то Page.EvalOnSelectorAsync() будет ждать разрешения промиса и вернет его значение.

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

var searchValue = await page.EvalOnSelectorAsync<string>("#search", "el => el.value");
var preloadHref = await page.EvalOnSelectorAsync<string>("link[rel=preload]", "el => el.href");
var html = await page.EvalOnSelectorAsync(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello");

Аргументы

  • selector string#

    Селектор для запроса.

  • expression string#

    JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

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

    Опциональный аргумент для передачи в выражение.

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

Возвращает

  • [object]#

EvalOnSelectorAllAsync

Добавлено в: v1.9 page.EvalOnSelectorAllAsync
Не рекомендуется

В большинстве случаев Locator.EvaluateAllAsync(), другие вспомогательные методы Locator и утверждения с приоритетом на веб выполняют работу лучше.

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

Если выражение возвращает Promise, то Page.EvalOnSelectorAllAsync() будет ждать разрешения промиса и вернет его значение.

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

var divsCount = await page.EvalOnSelectorAllAsync<bool>("div", "(divs, min) => divs.length >= min", 10);

Аргументы

  • selector string#

    Селектор для запроса.

  • expression string#

    JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

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

    Опциональный аргумент для передачи в выражение.

Возвращает

  • [object]#

FillAsync

Добавлено до v1.9 page.FillAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.FillAsync() вместо этого. Подробнее о локаторах.

Этот метод ожидает элемент, соответствующий селектору, ожидает проверки действительности, фокусирует элемент, заполняет его и вызывает событие input после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.

Если целевой элемент не является <input>, <textarea> или [contenteditable] элементом, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный контроль, будет заполнен контроль.

Для отправки более детализированных событий клавиатуры используйте Locator.PressSequentiallyAsync().

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

await Page.FillAsync(selector, value, options);

Аргументы

  • selector string#

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

  • value string#

    Значение для заполнения элемента <input>, <textarea> или [contenteditable].

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

    • Force bool? (опционально) Добавлено в: v1.13#

      Нужно ли обходить проверки действительности. По умолчанию false.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


FocusAsync

Добавлено до v1.9 page.FocusAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.FocusAsync() вместо этого. Подробнее о локаторах.

Этот метод получает элемент с селектором и фокусирует его. Если нет элемента, соответствующего селектору, метод ждет, пока соответствующий элемент не появится в DOM.

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

await Page.FocusAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


GetAttributeAsync

Добавлено до v1.9 page.GetAttributeAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.GetAttributeAsync() вместо этого. Подробнее о локаторах.

Возвращает значение атрибута элемента.

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

await Page.GetAttributeAsync(selector, name, options);

Аргументы

  • selector string#

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

  • name string#

    Имя атрибута, значение которого нужно получить.

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


HoverAsync

Добавлено до v1.9 page.HoverAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.HoverAsync() вместо этого. Подробнее о локаторах.

Этот метод наводит курсор на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для наведения курсора на центр элемента или на указанную позицию.

Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.

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

await Page.HoverAsync(selector, options);

Аргументы

  • selector string#

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

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

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

      Нужно ли обходить проверки действительности. По умолчанию false.

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

    • NoWaitAfter bool? (опционально) Добавлено в: v1.28#

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения. Обратите внимание, что клавиатурные модификаторы будут нажаты независимо от trial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.

Возвращает


InnerHTMLAsync

Добавлено до v1.9 page.InnerHTMLAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InnerHTMLAsync() вместо этого. Подробнее о локаторах.

Возвращает element.innerHTML.

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

await Page.InnerHTMLAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


InnerTextAsync

Добавлено до v1.9 page.InnerTextAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InnerTextAsync() вместо этого. Подробнее о локаторах.

Возвращает element.innerText.

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

await Page.InnerTextAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


InputValueAsync

Добавлено в: v1.13 page.InputValueAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InputValueAsync() вместо этого. Подробнее о локаторах.

Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.

Выбрасывает исключение для не-input элементов. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный контрол, возвращает значение контрола.

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

await Page.InputValueAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


IsCheckedAsync

Добавлено до v1.9 page.IsCheckedAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsCheckedAsync() вместо этого. Подробнее о локаторах.

Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является чекбоксом или радио-кнопкой.

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

await Page.IsCheckedAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


IsDisabledAsync

Добавлено до v1.9 page.IsDisabledAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsDisabledAsync() вместо этого. Подробнее о локаторах.

Возвращает, отключен ли элемент, противоположность enabled.

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

await Page.IsDisabledAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


IsEditableAsync

Добавлено до v1.9 page.IsEditableAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsEditableAsync() вместо этого. Подробнее о локаторах.

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

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

await Page.IsEditableAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


IsEnabledAsync

Добавлено до v1.9 page.IsEnabledAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsEnabledAsync() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент включенным.

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

await Page.IsEnabledAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


IsHiddenAsync

Добавлено до v1.9 page.IsHiddenAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsHiddenAsync() вместо этого. Подробнее о локаторах.

Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.

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

await Page.IsHiddenAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

      Устарело

      Эта опция игнорируется. Page.IsHiddenAsync() не ждет, пока элемент станет скрытым, и возвращает результат немедленно.

Возвращает


IsVisibleAsync

Добавлено до v1.9 page.IsVisibleAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsVisibleAsync() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.

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

await Page.IsVisibleAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

      Устарело

      Эта опция игнорируется. Page.IsVisibleAsync() не ждет, пока элемент станет видимым, и возвращает результат немедленно.

Возвращает


PressAsync

Добавлено до v1.9 page.PressAsync
Не рекомендуется

Используйте основанный на локаторах Locator.PressAsync() вместо этого. Подробнее о локаторах.

Фокусируется на элементе, а затем использует Keyboard.DownAsync() и Keyboard.UpAsync().

key может указывать предполагаемое значение keyboardEvent.key или один символ для генерации текста. Надмножество значений key можно найти здесь. Примеры клавиш:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp и т.д.

Также поддерживаются следующие модификационные сочетания: Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta. ControlOrMeta разрешается в Control на Windows и Linux и в Meta на macOS.

Удержание Shift будет вводить текст, соответствующий key в верхнем регистре.

Если key является одним символом, он чувствителен к регистру, поэтому значения a и A будут генерировать разные тексты.

Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++ или key: "Control+Shift+T". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.

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

var page = await browser.NewPageAsync();
await page.GotoAsync("https://keycode.info");
await page.PressAsync("body", "A");
await page.ScreenshotAsync(new() { Path = "A.png" });
await page.PressAsync("body", "ArrowLeft");
await page.ScreenshotAsync(new() { Path = "ArrowLeft.png" });
await page.PressAsync("body", "Shift+O");
await page.ScreenshotAsync(new() { Path = "O.png" });

Аргументы

  • selector string#

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

  • key string#

    Имя клавиши для нажатия или символ для генерации, например, ArrowLeft или a.

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

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

      Время ожидания между keydown и keyup в миллисекундах. По умолчанию 0.

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

      Устарело

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

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

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

Возвращает


QuerySelectorAsync

Добавлено в: v1.9 page.QuerySelectorAsync
Не рекомендуется

Используйте основанный на локаторах Page.Locator() вместо этого. Подробнее о локаторах.

Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null. Чтобы дождаться элемента на странице, используйте Locator.WaitForAsync().

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

await Page.QuerySelectorAsync(selector, options);

Аргументы

  • selector string#

    Селектор для запроса.

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.

Возвращает


QuerySelectorAllAsync

Добавлено в: v1.9 page.QuerySelectorAllAsync
Не рекомендуется

Используйте основанный на локаторах Page.Locator() вместо этого. Подробнее о локаторах.

Метод находит все элементы, соответствующие указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в [].

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

await Page.QuerySelectorAllAsync(selector);

Аргументы

  • selector string#

    Селектор для запроса.

Возвращает


RunAndWaitForNavigationAsync

Добавлено до v1.9 page.RunAndWaitForNavigationAsync
Устарело

Этот метод по своей природе является гонкой, пожалуйста, используйте Page.WaitForURLAsync() вместо этого.

Ожидает навигации основного фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация разрешится с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация разрешится с null.

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

Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick, который вызывает навигацию из setTimeout. Рассмотрим этот пример:

await page.RunAndWaitForNavigationAsync(async () =>
{
// Это действие вызывает навигацию после тайм-аута.
await page.GetByText("Navigate after timeout").ClickAsync();
});

// Метод продолжается после завершения навигации
примечание

Использование History API для изменения URL считается навигацией.

Аргументы

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

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

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

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

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

    • Url|UrlRegex|UrlFunc string? | Regex? | Func<string?, bool> (опционально)#

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


WaitForNavigationAsync

Добавлено до v1.9 page.WaitForNavigationAsync
Устарело

Этот метод по своей природе является гонкой, пожалуйста, используйте Page.WaitForURLAsync() вместо этого.

Ожидает навигации основного фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация разрешится с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация разрешится с null.

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

Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию страницы. Например, цель клика имеет обработчик onclick, который вызывает навигацию из setTimeout. Рассмотрим этот пример:

await page.RunAndWaitForNavigationAsync(async () =>
{
// Это действие вызывает навигацию после тайм-аута.
await page.GetByText("Navigate after timeout").ClickAsync();
});

// Метод продолжается после завершения навигации
примечание

Использование History API для изменения URL считается навигацией.

Аргументы

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

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

    • Url|UrlRegex|UrlFunc string? | Regex? | Func<string?, bool> (опционально)#

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

    • WaitUntil enum WaitUntilState { Load, DOMContentLoaded, NetworkIdle, Commit }? (опционально)#

      Когда считать операцию успешной, по умолчанию load. События могут быть:

      • 'domcontentloaded' - считать операцию завершенной, когда событие DOMContentLoaded будет вызвано.
      • 'load' - считать операцию завершенной, когда событие load будет вызвано.
      • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум 500 мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
      • 'commit' - считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.

Возвращает


SelectOptionAsync

Добавлено до версии v1.9 page.SelectOptionAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.SelectOptionAsync() вместо этого. Подробнее о локаторах.

Этот метод ожидает элемент, соответствующий селектору, выполняет проверки действительности, ожидает, пока все указанные опции не будут присутствовать в элементе <select>, и выбирает эти опции.

Если целевой элемент не является элементом <select>, этот метод вызывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный контрол, будет использован контрол.

Возвращает массив значений опций, которые были успешно выбраны.

Вызывает события change и input, как только все предоставленные опции были выбраны.

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

// Одиночный выбор, соответствующий значению или метке
await page.SelectOptionAsync("select#colors", new[] { "blue" });
// одиночный выбор, соответствующий как значению, так и метке
await page.SelectOptionAsync("select#colors", new[] { new SelectOptionValue() { Label = "blue" } });
// множественный выбор
await page.SelectOptionAsync("select#colors", new[] { "red", "green", "blue" });

Аргументы

  • selector string#

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

  • values string | ElementHandle | IEnumerable | SelectOption | IEnumerable | IEnumerable?#

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

      Соответствует option.value. Опционально.

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

      Соответствует option.label. Опционально.

    • Index int? (опционально)

      Соответствует индексу. Опционально.

    Опции для выбора. Если у <select> есть атрибут multiple, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают.

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

    • Force bool? (опционально) Добавлено в: v1.13#

      Нужно ли обходить проверки действительности. По умолчанию false.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


SetCheckedAsync

Добавлено в: v1.15 page.SetCheckedAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.SetCheckedAsync() вместо этого. Подробнее о локаторах.

Этот метод отмечает или снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
  3. Если элемент уже имеет правильное состояние отметки, этот метод возвращается немедленно.
  4. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  5. Прокрутите элемент в видимую область, если это необходимо.
  6. Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
  7. Убедитесь, что элемент теперь отмечен или снят. Если нет, этот метод вызывает ошибку.

Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

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

await Page.SetCheckedAsync(selector, checked, options);

Аргументы

  • selector string#

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

  • checkedState bool#

    Нужно ли отметить или снять отметку с флажка.

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

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

      Нужно ли обходить проверки действительности. По умолчанию false.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла области отступов элемента. Если не указано, используется видимая точка элемента.

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

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


SetInputFilesAsync

Добавлено до версии v1.9 page.SetInputFilesAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.SetInputFilesAsync() вместо этого. Подробнее о локаторах.

Устанавливает значение элемента ввода файла в указанные пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы. Для входных данных с атрибутом [webkitdirectory] поддерживается только один путь к директории.

Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>, который имеет связанный контрол, будет использован контрол.

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

await Page.SetInputFilesAsync(selector, files, options);

Аргументы

  • selector string#

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

  • files string | IEnumerable<string> | FilePayload | IEnumerable<FilePayload>#

    • Name string

      Имя файла

    • MimeType string

      Тип файла

    • Buffer byte[]

      Содержимое файла

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

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


TapAsync

Добавлено до версии v1.9 page.TapAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.TapAsync() вместо этого. Подробнее о локаторах.

Этот метод выполняет нажатие на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Touchscreen, чтобы нажать в центре элемента или в указанной позиции.

Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

примечание

Метод Page.TapAsync() вызовет ошибку, если опция HasTouch контекста браузера равна false.

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

await Page.TapAsync(selector, options);

Аргументы

  • selector string#

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

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

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

      Нужно ли обходить проверки действительности. По умолчанию false.

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла области отступов элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурные модификаторы будут нажаты независимо от trial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.

Возвращает


TextContentAsync

Добавлено до версии v1.9 page.TextContentAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.TextContentAsync() вместо этого. Подробнее о локаторах.

Возвращает element.textContent.

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

await Page.TextContentAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


TypeAsync

Добавлено до версии v1.9 page.TypeAsync
Устарело

В большинстве случаев следует использовать Locator.FillAsync() вместо этого. Вам нужно нажимать клавиши по одной, только если на странице есть специальная обработка клавиатуры - в этом случае используйте Locator.PressSequentiallyAsync().

Отправляет события keydown, keypress/input и keyup для каждого символа в тексте. page.type можно использовать для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Page.FillAsync().

Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте Keyboard.PressAsync().

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

Аргументы

  • selector string#

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

  • text string#

    Текст для ввода в фокусированный элемент.

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

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

      Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


UncheckAsync

Добавлено до версии v1.9 page.UncheckAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.UncheckAsync() вместо этого. Подробнее о локаторах.

Этот метод снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже снят, этот метод возвращается немедленно.
  3. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
  6. Убедитесь, что элемент теперь снят. Если нет, этот метод вызывает ошибку.

Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

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

await Page.UncheckAsync(selector, options);

Аргументы

  • selector string#

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

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

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

      Нужно ли обходить проверки действительности. По умолчанию false.

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

      Устарело

      Эта опция не имеет эффекта.

      Эта опция не имеет эффекта.

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

      • X [float]

      • Y [float]

      Точка, используемая относительно верхнего левого угла области отступов элемента. Если не указано, используется видимая точка элемента.

    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

    • Trial bool? (опционально) Добавлено в: v1.11#

      Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.

Возвращает


WaitForSelectorAsync

Добавлено до версии v1.9 page.WaitForSelectorAsync
Не рекомендуется

Используйте веб-утверждения, которые утверждают видимость, или основанный на локаторах метод Locator.WaitForAsync() вместо этого. Подробнее о локаторах.

Возвращает, когда элемент, указанный селектором, удовлетворяет опции State. Возвращает null, если ожидание для hidden или detached.

примечание

Playwright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.

Ожидает, пока селектор не удовлетворит опцию State (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если в момент вызова метода селектор уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение Timeout миллисекунд, функция вызовет ошибку.

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

Этот метод работает через навигации:

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

class FrameExamples
{
public static async Task Images()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();

foreach (var currentUrl in new[] { "https://www.google.com", "https://bbc.com" })
{
await page.GotoAsync(currentUrl);
var element = await page.WaitForSelectorAsync("img");
Console.WriteLine($"Loaded image: {await element.GetAttributeAsync("src")}");
}

await browser.CloseAsync();
}
}

Аргументы

  • selector string#

    Селектор для запроса.

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

    • State enum WaitForSelectorState { Attached, Detached, Visible, Hidden }? (опционально)#

      По умолчанию 'visible'. Может быть:

      • 'attached' - ожидание, пока элемент будет присутствовать в DOM.
      • 'detached' - ожидание, пока элемент не будет присутствовать в DOM.
      • 'visible' - ожидание, пока элемент не будет иметь пустую ограничивающую рамку и не будет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую ограничивающую рамку и не считается видимым.
      • 'hidden' - ожидание, пока элемент либо не будет отсоединен от DOM, либо не будет иметь пустую ограничивающую рамку или visibility:hidden. Это противоположно опции 'visible'.
    • Strict bool? (опционально) Добавлено в: v1.14#

      Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.

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

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

Возвращает


WaitForTimeoutAsync

Добавлено до версии v1.9 page.WaitForTimeoutAsync
Не рекомендуется

Никогда не ждите тайм-аута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ждут автоматически.

Ожидает указанный тайм-аут в миллисекундах.

Обратите внимание, что page.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие вместо этого.

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

// Ожидание 1 секунду
await page.WaitForTimeoutAsync(1000);

Аргументы

  • timeout [float]#

    Тайм-аут для ожидания

Возвращает