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Добавляет скрипт, который будет выполнен в одном из следующих сценариев:
- Каждый раз, когда страница переходит на новый URL.
- Каждый раз, когда дочерний фрейм присоединяется или переходит на новый URL. В этом случае скрипт выполняется в контексте вновь присоединенного фрейма.
Скрипт выполняется после создания документа, но до выполнения любых его скриптов. Это полезно для изменения среды JavaScript, например, для установки начального значения Math.random
.
Использование
Пример переопределения Math.random
перед загрузкой страницы:
// preload.js
Math.random = () => 42;
await Page.AddInitScriptAsync(scriptPath: "./preload.js");
Порядок выполнения нескольких скриптов, установленных через BrowserContext.AddInitScriptAsync() и Page.AddInitScriptAsync(), не определен.
Аргументы
Возвращает
AddLocatorHandlerAsync
Добавлено в: v1.42При тестировании веб-страницы иногда появляются неожиданные наложения, такие как диалог "Зарегистрироваться", которые блокируют действия, которые вы хотите автоматизировать, например, нажатие кнопки. Эти наложения не всегда появляются одинаково или в одно и то же время, что делает их сложными для обработки в автоматизированных тестах.
Этот метод позволяет вам настроить специальную функцию, называемую обработчиком, которая активируется, когда обнаруживает, что наложение видно. Задача обработчика - удалить наложение, позволяя вашему тесту продолжаться так, как будто наложения не было.
Вещи, которые нужно учитывать:
- Когда наложение показывается предсказуемо, мы рекомендуем явно ожидать его в вашем тесте и отклонять его как часть вашего обычного тестового потока, вместо использования Page.AddLocatorHandlerAsync().
- Playwright проверяет наличие наложения каждый раз перед выполнением или повторной попыткой действия, требующего проверки возможности действия, или перед выполнением проверки с автоматическим ожиданием. Когда наложение видно, Playwright сначала вызывает обработчик, а затем продолжает действие/проверку. Обратите внимание, что обработчик вызывается только при выполнении действия/проверки - если наложение становится видимым, но вы не выполняете никаких действий, обработчик не будет вызван.
- После выполнения обработчика Playwright убедится, что наложение, вызвавшее обработчик, больше не видно. Вы можете отказаться от этого поведения с помощью NoWaitAfter.
- Время выполнения обработчика учитывается в тайм-ауте действия/проверки, которое вызвало обработчик. Если ваш обработчик занимает слишком много времени, это может вызвать тайм-ауты.
- Вы можете зарегистрировать несколько обработчиков. Однако в любой момент времени будет выполняться только один обработчик. Убедитесь, что действия внутри обработчика не зависят от другого обработчика.
Выполнение обработчика изменит состояние вашей страницы в середине теста. Например, это изменит текущий фокус элемента и переместит мышь. Убедитесь, что действия, выполняемые после обработчика, являются автономными и не зависят от неизменности состояния фокуса и мыши.
Например, рассмотрим тест, который вызывает 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 });
Аргументы
-
Локатор, который вызывает обработчик.
-
Функция, которая должна быть выполнена, как только локатор появится. Эта функция должна избавиться от элемента, который блокирует действия, такие как клик.
-
options
PageAddLocatorHandlerOptions?
(опционально)-
NoWaitAfter
bool? (опционально) Добавлено в: v1.44#По умолчанию, после вызова обработчика Playwright будет ждать, пока наложение не станет скрытым, и только затем продолжит действие/проверку, вызвавшую обработчик. Эта опция позволяет отказаться от этого поведения, чтобы наложение могло оставаться видимым после выполнения обработчика.
-
Times
int? (опционально) Добавлено в: v1.44#Указывает максимальное количество раз, которое этот обработчик должен быть вызван. По умолчанию не ограничено.
-
Возвращает
AddScriptTagAsync
Добавлено до v1.9Добавляет тег <script>
на страницу с желаемым URL или содержимым. Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Использование
await Page.AddScriptTagAsync(options);
Аргументы
options
PageAddScriptTagOptions?
(опционально)-
Content
string? (опционально)#Сырой JavaScript-контент для внедрения в фрейм.
-
Путь к JavaScript-файлу для внедрения в фрейм. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта, который нужно добавить.
-
Возвращает
AddStyleTagAsync
Добавлено до v1.9Добавляет тег <link rel="stylesheet">
на страницу с желаемым URL или тег <style type="text/css">
с содержимым. Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Использование
await Page.AddStyleTagAsync(options);
Аргументы
options
PageAddStyleTagOptions?
(опционально)
Возвращает
BringToFrontAsync
Добавлено до v1.9Выводит страницу на передний план (активирует вкладку).
Использование
await Page.BringToFrontAsync();
Возвращает
CloseAsync
Добавлено до v1.9Если 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Получает полный HTML-контент страницы, включая doctype.
Использование
await Page.ContentAsync();
Возвращает
Context
Добавлено до v1.9Получает контекст браузера, к которому принадлежит страница.
Использование
Page.Context
Возвращает
DragAndDropAsync
Добавлено в: v1.13Этот метод перетаскивает исходный элемент на целевой элемент. Сначала он перемещается к исходному элементу, выполняет 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 },
});
Аргументы
-
Селектор для поиска элемента для перетаскивания. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageDragAndDropOptions?
(опционально)-
Нужно ли обходить проверки возможности действия. По умолчанию
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(). -
Если установлено, этот метод выполняет только проверки возможности действия и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
EmulateMediaAsync
Добавлено до v1.9Этот метод изменяет 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(), возвращает 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();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Необязательный аргумент для передачи в выражение.
Возвращает
- [object]#
EvaluateHandleAsync
Добавлено до v1.9Возвращает значение вызова выражения в виде 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();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Необязательный аргумент для передачи в выражение.
Возвращает
ExposeBindingAsync
Добавлено до версии v1.9Метод добавляет функцию с именем 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");
}
}
Аргументы
-
Имя функции в объекте window.
-
callback
Action<BindingSource, T, [TResult]>#Функция обратного вызова, которая будет вызвана в контексте Playwright.
-
options
PageExposeBindingOptions?
(опционально)
Возвращает
ExposeFunctionAsync
Добавлено до версии v1.9Метод добавляет функцию с именем 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"));
}
}
Аргументы
-
Имя функции в объекте window.
-
callback
Action<T, [TResult]>#Функция обратного вызова, которая будет вызвана в контексте Playwright.
Возвращает
Frame
Добавлено до версии v1.9Возвращает фрейм, соответствующий указанным критериям. Должно быть указано либо name
, либо url
.
Использование
var frame = page.Frame("frame-name");
var frame = page.FrameByUrl(".*domain.*");
Аргументы
Возвращает
FrameByUrl
Добавлено в: v1.9Возвращает фрейм с соответствующим URL.
Использование
Page.FrameByUrl(url);
Аргументы
-
url
string | Regex | Func<string, bool>#Глобальный шаблон, регулярное выражение или предикат, получающий
url
фрейма как объект URL.
Возвращает
FrameLocator
Добавлено в: v1.17При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame
, например, <iframe id="my-frame">
:
var locator = page.FrameLocator("#my-iframe").GetByText("Submit");
await locator.ClickAsync();
Аргументы
Возвращает
Frames
Добавлено до версии v1.9Массив всех фреймов, прикрепленных к странице.
Использование
Page.Frames
Возвращает
GetByAltText
Добавлено в: v1.27Позволяет находить элементы по их alt-тексту.
Использование
Например, этот метод найдет изображение по alt-тексту "Playwright logo":
<img alt='Playwright logo'>
await page.GetByAltText("Playwright logo").ClickAsync();
Аргументы
-
Текст для поиска элемента.
-
options
PageGetByAltTextOptions?
(опционально)
Возвращает
GetByLabel
Добавлено в: v1.27Позволяет находить элементы ввода по тексту связанного <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");
Аргументы
-
Текст для поиска элемента.
-
options
PageGetByLabelOptions?
(опционально)
Возвращает
GetByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
await page
.GetByPlaceholder("name@example.com")
.FillAsync("playwright@microsoft.com");
Аргументы
-
Текст для поиска элемента.
-
options
PageGetByPlaceholderOptions?
(опционально)
Возвращает
GetByRole
Добавлено в: v1.27Позволяет находить элементы по их 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?
(опционально)-
Атрибут, который обычно устанавливается
aria-checked
или нативными элементами<input type=checkbox>
.Узнайте больше о
aria-checked
. -
Атрибут, который обычно устанавливается
aria-disabled
илиdisabled
.примечаниеВ отличие от большинства других атрибутов,
disabled
наследуется через иерархию DOM. Узнайте больше оaria-disabled
. -
Exact
bool? (опционально) Добавлено в: v1.28#Совпадает ли Name|NameRegex точно: с учетом регистра и всей строки. По умолчанию false. Игнорируется, когда Name|NameRegex является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.
-
Атрибут, который обычно устанавливается
aria-expanded
.Узнайте больше о
aria-expanded
. -
IncludeHidden
bool? (опционально)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden
. -
Числовой атрибут, который обычно присутствует для ролей
heading
,listitem
,row
,treeitem
, с значениями по умолчанию для элементов<h1>-<h6>
.Узнайте больше о
aria-level
. -
Name|NameRegex
string? | Regex? (опционально)#Опция для соответствия доступному имени. По умолчанию, соответствие не учитывает регистр и ищет подстроку, используйте Exact для управления этим поведением.
Узнайте больше о доступном имени.
-
Атрибут, который обычно устанавливается
aria-pressed
.Узнайте больше о
aria-pressed
. -
Атрибут, который обычно устанавливается
aria-selected
.Узнайте больше о
aria-selected
.
-
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о руководствах ARIA.
Многие HTML элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Руководства ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role
и/или aria-*
атрибуты на значения по умолчанию.
GetByTestId
Добавлено в: v1.27Находит элемент по тестовому идентификатору.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его тестовому идентификатору:
await page.GetByTestId("directions").ClickAsync();
Аргументы
Возвращает
Детали
По умолчанию используется атрибут data-testid
в качестве тестового идентификатора. Используйте Selectors.SetTestIdAttribute() для настройки другого атрибута тестового идентификатора, если это необходимо.
GetByText
Добавлено в: v1.27Позволяет находить элементы, содержащие заданный текст.
Смотрите также 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));
Аргументы
-
Текст для поиска элемента.
-
options
PageGetByTextOptions?
(опционально)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button
и submit
сопоставляются по их value
, а не по текстовому содержимому. Например, поиск по тексту "Log in"
соответствует <input type=button value="Log in">
.
GetByTitle
Добавлено в: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
await Expect(Page.GetByTitle("Issues count")).toHaveText("25 issues");
Аргументы
-
Текст для поиска элемента.
-
options
PageGetByTitleOptions?
(опционально)
Возвращает
GoBackAsync
Добавлено до v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления. Если невозможно вернуться назад, возвращает 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Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления. Если невозможно перейти вперед, возвращает 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Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с первым не перенаправленным ответом.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- Timeout превышен во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый HTTP-код состояния, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав Response.Status.
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения - это навигация на about:blank
или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null
.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему.
Использование
await Page.GotoAsync(url, options);
Аргументы
-
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
Возвращает
Locator
Добавлено в: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице/фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
Page.Locator(selector, options);
Аргументы
-
Селектор для использования при разрешении элемента DOM.
-
options
PageLocatorOptions?
(опционально)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
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
Возвращает
OpenerAsync
Добавлено до v1.9Возвращает открыватель для всплывающих страниц и null
для других. Если открыватель уже был закрыт, возвращает null
.
Использование
await Page.OpenerAsync();
Возвращает
PauseAsync
Добавлено в: v1.9Приостанавливает выполнение скрипта. Playwright остановит выполнение скрипта и будет ждать, пока пользователь не нажмет кнопку 'Resume' в оверлее страницы или не вызовет playwright.resume()
в консоли DevTools.
Пользователь может исследовать селекторы или выполнять ручные действия во время паузы. Возобновление продолжит выполнение оригинального скрипта с того места, где он был приостановлен.
Этот метод требует, чтобы Playwright был запущен в режиме с интерфейсом, с ложным значением опции Headless.
Использование
await Page.PauseAsync();
Возвращает
PdfAsync
Добавлено до v1.9Возвращает буфер 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 11inLegal
: 8.5in x 14inTabloid
: 11in x 17inLedger
: 17in x 11inA0
: 33.1in x 46.8inA1
: 23.4in x 33.1inA2
: 16.54in x 23.4inA3
: 11.7in x 16.54inA4
: 8.27in x 11.7inA5
: 5.83in x 8.27inA6
: 4.13in x 5.83in
Разметка HeaderTemplate и FooterTemplate имеет следующие ограничения: > 1. Теги скриптов внутри шаблонов не выполняются. > 2. Стили страницы не видны внутри шаблонов.
Аргументы
options
PagePdfOptions?
(опционально)-
DisplayHeaderFooter
bool? (опционально)#Отображать заголовок и нижний колонтитул. По умолчанию
false
. -
FooterTemplate
string? (опционально)#HTML-шаблон для нижнего колонтитула печати. Должен использовать тот же формат, что и HeaderTemplate.
-
Формат бумаги. Если установлен, имеет приоритет над опциями Width или Height. По умолчанию 'Letter'.
-
HeaderTemplate
string? (опционально)#HTML-шаблон для заголовка печати. Должен быть допустимой HTML-разметкой с использованием следующих классов для вставки значений печати:
'date'
отформатированная дата печати'title'
заголовок документа'url'
местоположение документа'pageNumber'
номер текущей страницы'totalPages'
общее количество страниц в документе
-
Высота бумаги, принимает значения с указанием единиц измерения.
-
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'. По умолчанию пустая строка, что означает печать всех страниц.
-
Путь к файлу для сохранения 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
. -
Ширина бумаги, принимает значения с указанием единиц измерения.
-
Возвращает
ReloadAsync
Добавлено до v1.9Этот метод перезагружает текущую страницу так же, как если бы пользователь инициировал обновление браузера. Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления.
Использование
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.AddLocatorHandlerAsync() для конкретного локатора.
Использование
await Page.RemoveLocatorHandlerAsync(locator);
Аргументы
-
Локатор, переданный в Page.AddLocatorHandlerAsync().
Возвращает
RequestGCAsync
Добавлено в: v1.48Запрашивает у страницы выполнение сборки мусора. Обратите внимание, что нет гарантии, что все недоступные объекты будут собраны.
Это полезно для обнаружения утечек памяти. Например, если на вашей странице есть большой объект '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Маршрутизация предоставляет возможность изменять сетевые запросы, которые выполняются страницей.
После включения маршрутизации каждый запрос, соответствующий шаблону 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()
. -
функция обработчика для маршрутизации запроса.
-
options
PageRouteOptions?
(опционально)
Возвращает
RouteFromHARAsync
Добавлено в: v1.23Если указано, сетевые запросы, сделанные на странице, будут обслуживаться из HAR-файла. Подробнее читайте в разделе Воспроизведение из HAR.
Playwright не будет обслуживать запросы, перехваченные Service Worker, из HAR-файла. См. эту проблему. Мы рекомендуем отключать Service Workers при использовании перехвата запросов, установив ServiceWorkers в 'block'
.
Использование
await Page.RouteFromHARAsync(har, options);
Аргументы
-
Путь к HAR файлу с предварительно записанными сетевыми данными. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
options
PageRouteFromHAROptions?
(опционально)-
NotFound
enum HarNotFound { Abort, Fallback }?
(опционально)#- Если установлено значение 'abort', любой запрос, не найденный в HAR-файле, будет прерван.
- Если установлено значение 'fallback', отсутствующие запросы будут отправлены в сеть.
По умолчанию - abort.
-
Если указано, обновляет данный 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Этот метод позволяет модифицировать 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Выполняет действие и ждет, пока 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Выполняет действие и ждет, пока 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Выполняет действие и ждет нового 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Выполняет действие и ждет нового 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Выполняет действие и ждет, пока не будет создан новый 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Выполняет действие и ждет, пока не будет создан новый 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. Если предикат предоставлен, он передает значение [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. Если предикат предоставлен, он передает значение [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Ожидает совпадения запроса и возвращает его. Подробнее о событиях читайте в разделе ожидание события.
Использование
// Ожидает следующего запроса с указанным 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Ожидает совпадения запроса и возвращает его. Подробнее о событиях читайте в разделе ожидание события.
Использование
// Ожидает следующего запроса с указанным 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Выполняет действие и ждет, пока Request не завершит загрузку. Если предикат предоставлен, он передает значение Request в функцию predicate
и ждет, пока predicate(request)
не вернет истинное значение. Выдаст ошибку, если страница будет закрыта до того, как событие Page.RequestFinished будет вызвано.
Использование
await Page.RunAndWaitForRequestFinishedAsync(action, options);
Аргументы
-
Действие, которое вызывает событие.
-
options
PageRunAndWaitForRequestFinishedOptions?
(опционально)-
Predicate
Func<Request?, bool> (опционально)#Получает объект Request и разрешает в истинное значение, когда ожидание должно завершиться.
-
Timeout
[float]? (опционально)#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя BrowserContext.SetDefaultTimeout().
-
Возвращает
WaitForRequestFinishedAsync
Добавлено в: v1.12Выполняет действие и ждет, пока 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Возвращает совпавший ответ. Подробнее о событиях читайте в разделе ожидание события.
Использование
// Ожидает следующего ответа с указанным 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Возвращает совпавший ответ. Подробнее о событиях читайте в разделе ожидание события.
Использование
// Ожидает следующего ответа с указанным 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Выполняет действие и ждет нового 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Выполняет действие и ожидает нового 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Выполняет действие и ожидает нового 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Выполняет действие и ожидает нового 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Возвращает буфер с захваченным скриншотом.
Использование
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]высота области обрезки
Объект, который указывает обрезку результирующего изображения.
-
-
Если true, делает скриншот всей прокручиваемой страницы, вместо текущего видимого окна. По умолчанию
false
. -
Mask
IEnumerable?<Locator> (опционально)#Укажите локаторы, которые должны быть замаскированы при создании скриншота. Замаскированные элементы будут покрыты розовым прямоугольником
#FF00FF
(настраивается с помощью MaskColor), который полностью покрывает их ограничивающий прямоугольник. Маска также применяется к невидимым элементам, см. Совпадение только с видимыми элементами, чтобы отключить это. -
MaskColor
string? (опционально) Добавлено в: v1.35#Укажите цвет наложения для замаскированных элементов в формате цвета CSS. Цвет по умолчанию - розовый
#FF00FF
. -
OmitBackground
bool? (опционально)#Скрывает белый фон по умолчанию и позволяет делать скриншоты с прозрачностью. Не применимо к изображениям
jpeg
. По умолчаниюfalse
. -
Путь к файлу для сохранения изображения. Тип скриншота будет определен по расширению файла. Если Path является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, изображение не будет сохранено на диск.
-
Качество изображения, от 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Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.
Использование
await Page.SetContentAsync(html, options);
Аргументы
-
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.GoBackAsync()
- Page.GoForwardAsync()
- Page.GotoAsync()
- Page.ReloadAsync()
- Page.SetContentAsync()
- Page.RunAndWaitForNavigationAsync()
- Page.WaitForURLAsync()
Использование
Page.SetDefaultNavigationTimeout(timeout);
Аргументы
-
timeout
[float]#Максимальное время навигации в миллисекундах
SetDefaultTimeout
Добавлено до v1.9Эта настройка изменит максимальное время по умолчанию для всех методов, принимающих опцию timeout.
Page.SetDefaultNavigationTimeout() имеет приоритет над Page.SetDefaultTimeout().
Использование
Page.SetDefaultTimeout(timeout);
Аргументы
-
timeout
[float]#Максимальное время в миллисекундах. Передайте
0
, чтобы отключить тайм-аут.
SetExtraHTTPHeadersAsync
Добавлено до v1.9Дополнительные HTTP-заголовки будут отправлены с каждым запросом, инициированным страницей.
Page.SetExtraHTTPHeadersAsync() не гарантирует порядок заголовков в исходящих запросах.
Использование
await Page.SetExtraHTTPHeadersAsync(headers);
Аргументы
-
headers
IDictionary<string, string>#Объект, содержащий дополнительные HTTP-заголовки, которые будут отправлены с каждым запросом. Все значения заголовков должны быть строками.
Возвращает
SetViewportSizeAsync
Добавлено до v1.9В случае нескольких страниц в одном браузере каждая страница может иметь свой собственный размер окна просмотра. Однако 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");
Аргументы
Возвращает
TitleAsync
Добавлено до v1.9Возвращает заголовок страницы.
Использование
await Page.TitleAsync();
Возвращает
UnrouteAsync
Добавлено до v1.9Удаляет маршрут, созданный с помощью Page.RouteAsync(). Когда handler не указан, удаляет все маршруты для url.
Использование
await Page.UnrouteAsync(url, handler);
Аргументы
-
url
string | Regex | Func<string, bool>#Глобальный шаблон, регулярное выражение или предикат, получающий URL для сопоставления при маршрутизации.
-
handler
Action<Route?> (опционально)#Опциональная функция-обработчик для маршрутизации запроса.
Возвращает
UnrouteAllAsync
Добавлено в: v1.41Удаляет все маршруты, созданные с помощью Page.RouteAsync() и Page.RouteFromHARAsync().
Использование
await Page.UnrouteAllAsync(options);
Аргументы
options
PageUnrouteAllOptions?
(опционально)-
Behavior
enum UnrouteBehavior { Wait, IgnoreErrors, Default }?
(опционально)#Указывает, следует ли ждать уже выполняющихся обработчиков и что делать, если они вызывают ошибки:
'default'
- не ждать завершения текущих вызовов обработчиков (если есть), если обработчик, который был удален, вызывает ошибку, это может привести к необработанной ошибке'wait'
- ждать завершения текущих вызовов обработчиков (если есть)'ignoreErrors'
- не ждать завершения текущих вызовов обработчиков (если есть), все ошибки, вызванные обработчиками после удаления маршрута, будут тихо пойманы
-
Возвращает
Url
Добавлено до v1.9Использование
Page.Url
Возвращает
Video
Добавлено до v1.9Объект видео, связанный с этой страницей.
Использование
Page.Video
Возвращает
ViewportSize
Добавлено до v1.9Использование
Page.ViewportSize
Возвращает
WaitForFunctionAsync
Добавлено до v1.9Возвращает, когда выражение возвращает истинное значение. Разрешается в 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);
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в выражение.
-
options
PageWaitForFunctionOptions?
(опционально)-
PollingInterval
[float]? (опционально)#Если указано, то это интервал в миллисекундах, с которым функция будет выполняться. По умолчанию, если опция не указана, выражение выполняется в
requestAnimationFrame
обратном вызове. -
Timeout
[float]? (опционально)#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
WaitForLoadStateAsync
Добавлено до v1.9Возвращает, когда достигнуто требуемое состояние загрузки.
Это разрешается, когда страница достигает требуемого состояния загрузки, по умолчанию 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?
(опционально)-
Timeout
[float]? (опционально)#Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultNavigationTimeout(), BrowserContext.SetDefaultTimeout(), Page.SetDefaultNavigationTimeout() или Page.SetDefaultTimeout().
-
Возвращает
WaitForURLAsync
Добавлено в: v1.11Ожидает, пока основной фрейм перейдет на указанный 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Этот метод возвращает всех выделенных WebWorkers, связанных со страницей.
Это не включает ServiceWorkers
Использование
Page.Workers
Возвращает
Свойства
APIRequest
Добавлено в: v1.16Помощник для тестирования API, связанный с этой страницей. Этот метод возвращает тот же экземпляр, что и BrowserContext.APIRequest в контексте страницы. Подробнее см. в BrowserContext.APIRequest.
Использование
Page.APIRequest
Тип
Clock
Добавлено в: v1.45Playwright имеет возможность имитировать часы и ход времени.
Использование
Page.Clock
Тип
Keyboard
Добавлено до v1.9Использование
Page.Keyboard
Тип
Mouse
Добавлено до v1.9Использование
Page.Mouse
Тип
Touchscreen
Добавлено до v1.9Использование
Page.Touchscreen
Тип
События
event Close
Добавлено до v1.9Вызывается, когда страница закрывается.
Использование
Page.Close += async (_, page) => {};
Данные события
event Console
Добавлено до v1.9Вызывается, когда 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Вызывается, когда страница падает. Страницы браузера могут падать, если они пытаются выделить слишком много памяти. Когда страница падает, текущие и последующие операции будут вызывать исключения.
Наиболее распространенный способ справиться с падениями - поймать исключение:
try {
// Падение может произойти во время клика.
await page.ClickAsync("button");
// Или во время ожидания события.
await page.WaitForPopup();
} catch (PlaywrightException e) {
// Когда страница падает, сообщение об исключении содержит "crash".
}
Использование
Page.Crash += async (_, page) => {};
Данные события
event Dialog
Добавлено до v1.9Вызывается, когда появляется диалог 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Вызывается, когда событие JavaScript DOMContentLoaded
отправляется.
Использование
Page.DOMContentLoaded += async (_, page) => {};
Данные события
event Download
Добавлено до v1.9Вызывается, когда начинается загрузка вложения. Пользователь может получить доступ к основным операциям с файлами на загруженном контенте через переданный экземпляр Download.
Использование
Page.Download += async (_, download) => {};
Данные события
event FileChooser
Добавлено в: v1.9Вызывается, когда предполагается появление выбора файла, например, после нажатия на <input type=file>
. Playwright может ответить на это, установив файлы ввода с помощью FileChooser.SetFilesAsync(), которые могут быть загружены после этого.
page.FileChooser += (_, fileChooser) =>
{
fileChooser.SetFilesAsync(@"C:\temp\myfile.pdf");
};
Использование
Page.FileChooser += async (_, fileChooser) => {};
Данные события
event FrameAttached
Добавлено в: v1.9Вызывается, когда фрейм присоединяется.
Использование
Page.FrameAttached += async (_, frame) => {};
Данные события
event FrameDetached
Добавлено в: v1.9Вызывается, когда фрейм отсоединяется.
Использование
Page.FrameDetached += async (_, frame) => {};
Данные события
event FrameNavigated
Добавлено в: v1.9Вызывается, когда фрейм переходит на новый URL.
Использование
Page.FrameNavigated += async (_, frame) => {};
Данные события
event Load
Добавлено до v1.9Вызывается, когда событие JavaScript load
отправляется.
Использование
Page.Load += async (_, page) => {};
Данные события
event PageError
Добавлено в: v1.9Вызывается, когда на странице происходит необработанное исключение.
// Записывать все необработанные ошибки в терминал
page.PageError += (_, exception) =>
{
Console.WriteLine("Необработанное исключение: " + exception);
};
Использование
Page.PageError += async (_, value) => {};
Данные события
event Popup
Добавлено до v1.9Вызывается, когда страница открывает новую вкладку или окно. Это событие вызывается в дополнение к 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Вызывается, когда страница отправляет запрос. Объект request доступен только для чтения. Чтобы перехватывать и изменять запросы, см. Page.RouteAsync() или BrowserContext.RouteAsync().
Использование
Page.Request += async (_, request) => {};
Данные события
event RequestFailed
Добавлено в: v1.9Вызывается, когда запрос не удается, например, из-за истечения времени ожидания.
Ответы с ошибками HTTP, такие как 404 или 503, все еще считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием Page.RequestFinished, а не Page.RequestFailed. Запрос будет считаться неудачным только в том случае, если клиент не может получить HTTP-ответ от сервера, например, из-за сетевой ошибки net::ERR_FAILED.
Использование
Page.RequestFailed += async (_, request) => {};
Данные события
event RequestFinished
Добавлено в: v1.9Вызывается, когда запрос успешно завершается после загрузки тела ответа. Для успешного ответа последовательность событий: request
, response
и requestfinished
.
Использование
Page.RequestFinished += async (_, request) => {};
Данные события
event Response
Добавлено до v1.9Вызывается, когда response статус и заголовки получены для запроса. Для успешного ответа последовательность событий: request
, response
и requestfinished
.
Использование
Page.Response += async (_, response) => {};
Данные события
event WebSocket
Добавлено в: v1.9Вызывается, когда отправляется запрос WebSocket.
Использование
Page.WebSocket += async (_, webSocket) => {};
Данные события
event Worker
Добавлено до v1.9Вызывается, когда выделенный WebWorker запускается страницей.
Использование
Page.Worker += async (_, worker) => {};
Данные события
Устаревшие
Accessibility
Добавлено до v1.9Это свойство не рекомендуется использовать. Пожалуйста, используйте другие библиотеки, такие как Axe, если вам нужно тестировать доступность страницы. См. наш руководство по интеграции с Axe для Node.js.
Использование
Page.Accessibility
Тип
CheckAsync
Добавлено до v1.9Используйте основанный на локаторах метод Locator.CheckAsync() вместо этого. Подробнее о локаторах.
Этот метод проверяет элемент, соответствующий селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает управление немедленно.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
Использование
await Page.CheckAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageCheckOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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Используйте основанный на локаторах метод Locator.ClickAsync() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для нажатия в центре элемента или в указанной позиции.
- Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция NoWaitAfter.
Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
Использование
await Page.ClickAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageClickOptions?
(опционально)-
Button
enum MouseButton { Left, Right, Middle }?
(опционально)#По умолчанию
left
. -
ClickCount
int? (опционально)#По умолчанию 1. См. UIEvent.detail.
-
Delay
[float]? (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки действительности. По умолчанию
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Используйте основанный на локаторах метод Locator.DblClickAsync() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, соответствующему селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для двойного клика в центре элемента или в указанной позиции.
Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
page.dblclick()
генерирует два события click
и одно событие dblclick
.
Использование
await Page.DblClickAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageDblClickOptions?
(опционально)-
Button
enum MouseButton { Left, Right, Middle }?
(опционально)#По умолчанию
left
. -
Delay
[float]? (опционально)#Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Нужно ли обходить проверки действительности. По умолчанию
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Используйте основанный на локаторах метод Locator.DispatchEventAsync() вместо этого. Подробнее о локаторах.
Пример ниже отправляет событие click
на элемент. Независимо от состояния видимости элемента, click
отправляется. Это эквивалентно вызову element.click().
Использование
await page.DispatchEventAsync("button#submit", "click");
Внутри создается экземпляр события на основе указанного типа, инициализируется с помощью свойств eventInit и отправляется на элемент. События по умолчанию composed
, cancelable
и всплывают.
Поскольку eventInit является специфичным для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle
в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:
var dataTransfer = await page.EvaluateHandleAsync("() => new DataTransfer()");
await page.DispatchEventAsync("#source", "dragstart", new { dataTransfer });
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип DOM-события:
"click"
,"dragstart"
и т.д. -
eventInit
EvaluationArgument? (опционально)#Опциональные свойства инициализации, специфичные для события.
-
options
PageDispatchEventOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
EvalOnSelectorAsync
Добавлено в: v1.9Этот метод не ожидает, пока элемент пройдет проверки действительности, и поэтому может привести к нестабильным тестам. Используйте 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");
Аргументы
-
Селектор для запроса.
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в выражение.
-
options
PageEvalOnSelectorOptions?
(опционально)
Возвращает
- [object]#
EvalOnSelectorAllAsync
Добавлено в: v1.9В большинстве случаев Locator.EvaluateAllAsync(), другие вспомогательные методы Locator и утверждения с приоритетом на веб выполняют работу лучше.
Метод находит все элементы, соответствующие указанному селектору на странице, и передает массив найденных элементов в качестве первого аргумента в выражение. Возвращает результат вызова выражения.
Если выражение возвращает Promise, то Page.EvalOnSelectorAllAsync() будет ждать разрешения промиса и вернет его значение.
Использование
var divsCount = await page.EvalOnSelectorAllAsync<bool>("div", "(divs, min) => divs.length >= min", 10);
Аргументы
-
Селектор для запроса.
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в выражение.
Возвращает
- [object]#
FillAsync
Добавлено до v1.9Используйте основанный на локаторах метод Locator.FillAsync() вместо этого. Подробнее о локаторах.
Этот метод ожидает элемент, соответствующий селектору, ожидает проверки действительности, фокусирует элемент, заполняет его и вызывает событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является <input>
, <textarea>
или [contenteditable]
элементом, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контроль, будет заполнен контроль.
Для отправки более детализированных событий клавиатуры используйте Locator.PressSequentiallyAsync().
Использование
await Page.FillAsync(selector, value, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<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Используйте основанный на локаторах метод Locator.FocusAsync() вместо этого. Подробнее о локаторах.
Этот метод получает элемент с селектором и фокусирует его. Если нет элемента, соответствующего селектору, метод ждет, пока соответствующий элемент не появится в DOM.
Использование
await Page.FocusAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageFocusOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
GetAttributeAsync
Добавлено до v1.9Используйте основанный на локаторах метод Locator.GetAttributeAsync() вместо этого. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await Page.GetAttributeAsync(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, значение которого нужно получить.
-
options
PageGetAttributeOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
HoverAsync
Добавлено до v1.9Используйте основанный на локаторах метод Locator.HoverAsync() вместо этого. Подробнее о локаторах.
Этот метод наводит курсор на элемент, соответствующий селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для наведения курсора на центр элемента или на указанную позицию.
Если все шаги не завершены в течение указанного времени ожидания, этот метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
Использование
await Page.HoverAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageHoverOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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Используйте основанный на локаторах Locator.InnerHTMLAsync() вместо этого. Подробнее о локаторах.
Возвращает element.innerHTML
.
Использование
await Page.InnerHTMLAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageInnerHTMLOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
InnerTextAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.InnerTextAsync() вместо этого. Подробнее о локаторах.
Возвращает element.innerText
.
Использование
await Page.InnerTextAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageInnerTextOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
InputValueAsync
Добавлено в: v1.13Используйте основанный на локаторах Locator.InputValueAsync() вместо этого. Подробнее о локаторах.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для не-input элементов. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный контрол, возвращает значение контрола.
Использование
await Page.InputValueAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageInputValueOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsCheckedAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsCheckedAsync() вместо этого. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является чекбоксом или радио-кнопкой.
Использование
await Page.IsCheckedAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsCheckedOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsDisabledAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsDisabledAsync() вместо этого. Подробнее о локаторах.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
await Page.IsDisabledAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsDisabledOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsEditableAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsEditableAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await Page.IsEditableAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsEditableOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsEnabledAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsEnabledAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент включенным.
Использование
await Page.IsEnabledAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsEnabledOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsHiddenAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsHiddenAsync() вместо этого. Подробнее о локаторах.
Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.
Использование
await Page.IsHiddenAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsHiddenOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#УстарелоЭта опция игнорируется. Page.IsHiddenAsync() не ждет, пока элемент станет скрытым, и возвращает результат немедленно.
-
Возвращает
IsVisibleAsync
Добавлено до v1.9Используйте основанный на локаторах Locator.IsVisibleAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.
Использование
await Page.IsVisibleAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageIsVisibleOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#УстарелоЭта опция игнорируется. Page.IsVisibleAsync() не ждет, пока элемент станет видимым, и возвращает результат немедленно.
-
Возвращает
PressAsync
Добавлено до v1.9Используйте основанный на локаторах 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" });
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
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.Locator() вместо этого. Подробнее о локаторах.
Метод находит элемент, соответствующий указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в null
. Чтобы дождаться элемента на странице, используйте Locator.WaitForAsync().
Использование
await Page.QuerySelectorAsync(selector, options);
Аргументы
-
Селектор для запроса.
-
options
PageQuerySelectorOptions?
(опционально)
Возвращает
QuerySelectorAllAsync
Добавлено в: v1.9Используйте основанный на локаторах Page.Locator() вместо этого. Подробнее о локаторах.
Метод находит все элементы, соответствующие указанному селектору на странице. Если ни один элемент не соответствует селектору, возвращаемое значение разрешается в []
.
Использование
await Page.QuerySelectorAllAsync(selector);
Аргументы
Возвращает
RunAndWaitForNavigationAsync
Добавлено до v1.9Этот метод по своей природе является гонкой, пожалуйста, используйте 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.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Используйте основанный на локаторах метод 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" });
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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Используйте основанный на локаторах метод Locator.SetCheckedAsync() вместо этого. Подробнее о локаторах.
Этот метод отмечает или снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
- Если элемент уже имеет правильное состояние отметки, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь отмечен или снят. Если нет, этот метод вызывает ошибку.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await Page.SetCheckedAsync(selector, checked, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Нужно ли отметить или снять отметку с флажка.
-
options
PageSetCheckedOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
false
. -
NoWaitAfter
bool? (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (опционально)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла области отступов элемента. Если не указано, используется видимая точка элемента.
-
-
Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
SetInputFilesAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.SetInputFilesAsync() вместо этого. Подробнее о локаторах.
Устанавливает значение элемента ввода файла в указанные пути к файлам или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы. Для входных данных с атрибутом [webkitdirectory]
поддерживается только один путь к директории.
Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контрол, будет использован контрол.
Использование
await Page.SetInputFilesAsync(selector, files, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
files
string | IEnumerable<string> |FilePayload
| IEnumerable<FilePayload
># -
options
PageSetInputFilesOptions?
(опционально)-
NoWaitAfter
bool? (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
TapAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.TapAsync() вместо этого. Подробнее о локаторах.
Этот метод выполняет нажатие на элемент, соответствующий селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Touchscreen, чтобы нажать в центре элемента или в указанной позиции.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Метод Page.TapAsync() вызовет ошибку, если опция HasTouch контекста браузера равна false.
Использование
await Page.TapAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageTapOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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Используйте основанный на локаторах метод Locator.TextContentAsync() вместо этого. Подробнее о локаторах.
Возвращает element.textContent
.
Использование
await Page.TextContentAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageTextContentOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
TypeAsync
Добавлено до версии v1.9В большинстве случаев следует использовать Locator.FillAsync() вместо этого. Вам нужно нажимать клавиши по одной, только если на странице есть специальная обработка клавиатуры - в этом случае используйте Locator.PressSequentiallyAsync().
Отправляет события keydown
, keypress
/input
и keyup
для каждого символа в тексте. page.type
можно использовать для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Page.FillAsync().
Чтобы нажать специальную клавишу, такую как Control
или ArrowDown
, используйте Keyboard.PressAsync().
Использование
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
options
PageTypeOptions?
(опционально)-
Delay
[float]? (опционально)#Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
NoWaitAfter
bool? (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
UncheckAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.UncheckAsync() вместо этого. Подробнее о локаторах.
Этот метод снимает отметку с элемента, соответствующего селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже снят, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят. Если нет, этот метод вызывает ошибку.
Когда все шаги в совокупности не завершены в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await Page.UncheckAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
PageUncheckOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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Используйте веб-утверждения, которые утверждают видимость, или основанный на локаторах метод 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();
}
}
Аргументы
-
Селектор для запроса.
-
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Никогда не ждите тайм-аута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ждут автоматически.
Ожидает указанный тайм-аут в миллисекундах.
Обратите внимание, что page.waitForTimeout()
следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие вместо этого.
Использование
// Ожидание 1 секунду
await page.WaitForTimeoutAsync(1000);
Аргументы
-
timeout
[float]#Тайм-аут для ожидания
Возвращает