Frame
В любой момент времени страница предоставляет текущее дерево фреймов через методы Page.MainFrame и Frame.ChildFrames.
Жизненный цикл объекта Frame контролируется тремя событиями, отправляемыми на объекте страницы:
- Page.FrameAttached - срабатывает, когда фрейм присоединяется к странице. Фрейм может быть присоединен к странице только один раз.
- Page.FrameNavigated - срабатывает, когда фрейм совершает навигацию на другой URL.
- Page.FrameDetached - срабатывает, когда фрейм отсоединяется от страницы. Фрейм может быть отсоединен от страницы только один раз.
Пример вывода дерева фреймов:
using Microsoft.Playwright;
using System;
using System.Threading.Tasks;
class FrameExamples
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Firefox.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
DumpFrameTree(page.MainFrame, string.Empty);
}
private static void DumpFrameTree(IFrame frame, string indent)
{
Console.WriteLine($"{indent}{frame.Url}");
foreach (var child in frame.ChildFrames)
DumpFrameTree(child, indent + " ");
}
}
Методы
AddScriptTagAsync
Добавлено до v1.9Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Добавляет тег <script>
на страницу с указанным URL или содержимым.
Использование
await Frame.AddScriptTagAsync(options);
Аргументы
options
FrameAddScriptTagOptions?
(опционально)-
Content
string? (опционально)#Сырой JavaScript-контент для внедрения в фрейм.
-
Путь к JavaScript-файлу для внедрения в фрейм. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта, который нужно добавить.
-
Возвращает
AddStyleTagAsync
Добавлено до v1.9Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Добавляет тег <link rel="stylesheet">
на страницу с указанным URL или тег <style type="text/css">
с содержимым.
Использование
await Frame.AddStyleTagAsync(options);
Аргументы
options
FrameAddStyleTagOptions?
(опционально)
Возвращает
ChildFrames
Добавлено до v1.9Использование
Frame.ChildFrames
Возвращает
ContentAsync
Добавлено до v1.9Получает полный HTML-контент фрейма, включая doctype.
Использование
await Frame.ContentAsync();
Возвращает
DragAndDropAsync
Добавлено в: v1.13Использование
await Frame.DragAndDropAsync(source, target, options);
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameDragAndDropOptions?
(опционально)-
Нужно ли обходить проверки actionability. По умолчанию
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(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
EvaluateAsync
Добавлено до v1.9Возвращает значение, возвращаемое expression.
Если функция, переданная в Frame.EvaluateAsync(), возвращает Promise, то Frame.EvaluateAsync() будет ждать разрешения промиса и вернет его значение.
Если функция, переданная в Frame.EvaluateAsync(), возвращает значение, не являющееся Serializable, то Frame.EvaluateAsync() возвращает undefined
. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON
: -0
, NaN
, Infinity
, -Infinity
.
Использование
var result = await frame.EvaluateAsync<int>("([x, y]) => Promise.resolve(x * y)", new[] { 7, 8 });
Console.WriteLine(result);
Также можно передать строку вместо функции.
Console.WriteLine(await frame.EvaluateAsync<int>("1 + 2")); // выводит "3"
Экземпляры ElementHandle могут быть переданы в качестве аргумента в Frame.EvaluateAsync():
var bodyHandle = await frame.EvaluateAsync("document.body");
var html = await frame.EvaluateAsync<string>("([body, suffix]) => body.innerHTML + suffix", new object [] { bodyHandle, "hello" });
await bodyHandle.DisposeAsync();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в expression.
Возвращает
- [object]#
EvaluateHandleAsync
Добавлено до v1.9Возвращает значение, возвращаемое expression в виде JSHandle.
Единственное отличие между Frame.EvaluateAsync() и Frame.EvaluateHandleAsync() заключается в том, что Frame.EvaluateHandleAsync() возвращает JSHandle.
Если функция, переданная в Frame.EvaluateHandleAsync(), возвращает Promise, то Frame.EvaluateHandleAsync() будет ждать разрешения промиса и вернет его значение.
Использование
// Обработчик для объекта window.
var aWindowHandle = await frame.EvaluateHandleAsync("() => Promise.resolve(window)");
Также можно передать строку вместо функции.
var docHandle = await frame.EvaluateHandleAsync("document"); // Обработчик для `document`
Экземпляры JSHandle могут быть переданы в качестве аргумента в Frame.EvaluateHandleAsync():
var handle = await frame.EvaluateHandleAsync("() => document.body");
var resultHandle = await frame.EvaluateHandleAsync("([body, suffix]) => body.innerHTML + suffix", new object[] { handle, "hello" });
Console.WriteLine(await resultHandle.JsonValueAsync<string>());
await resultHandle.DisposeAsync();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи в expression.
Возвращает
FrameElementAsync
Добавлено до v1.9Возвращает обработчик элемента frame
или iframe
, который соответствует этому фрейму.
Это обратное действие к ElementHandle.ContentFrameAsync(). Обратите внимание, что возвращаемый обработчик фактически принадлежит родительскому фрейму.
Этот метод выбрасывает ошибку, если фрейм был отсоединен до того, как frameElement()
вернет значение.
Использование
var frameElement = await frame.FrameElementAsync();
var contentFrame = await frameElement.ContentFrameAsync();
Console.WriteLine(frame == contentFrame); // -> True
Возвращает
FrameLocator
Добавлено в: v1.17При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame
, например <iframe id="my-frame">
:
var locator = frame.FrameLocator("#my-iframe").GetByText("Submit");
await locator.ClickAsync();
Аргументы
Возвращает
GetByAltText
Добавлено в: v1.27Позволяет находить элементы по их alt-тексту.
Использование
Например, этот метод найдет изображение по alt-тексту "Playwright logo":
<img alt='Playwright logo'>
await page.GetByAltText("Playwright logo").ClickAsync();
Аргументы
-
Текст для поиска элемента.
-
options
FrameGetByAltTextOptions?
(опционально)
Возвращает
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
FrameGetByLabelOptions?
(опционально)
Возвращает
GetByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
await page
.GetByPlaceholder("name@example.com")
.FillAsync("playwright@microsoft.com");
Аргументы
-
Текст для поиска элемента.
-
options
FrameGetByPlaceholderOptions?
(опционально)
Возвращает
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
FrameGetByRoleOptions?
(опционально)-
Атрибут, который обычно устанавливается с помощью
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
FrameGetByTextOptions?
(опционально)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа 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
FrameGetByTitleOptions?
(опционально)
Возвращает
GotoAsync
Добавлено до v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- Timeout превышен во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой допустимый код состояния HTTP, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав Response.Status.
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственными исключениями являются навигация на about:blank
или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null
.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему в исходном коде.
Использование
await Frame.GotoAsync(url, options);
Аргументы
-
URL для навигации фрейма. URL должен включать схему, например,
https://
. -
options
FrameGotoOptions?
(опционально)-
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'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
IsDetached
Добавлено до v1.9Возвращает true
, если фрейм был отсоединен, или false
в противном случае.
Использование
Frame.IsDetached
Возвращает
IsEnabledAsync
Добавлено до v1.9Возвращает, является ли элемент включенным.
Использование
await Frame.IsEnabledAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
FrameIsEnabledOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
Locator
Добавлено в: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице/фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
Frame.Locator(selector, options);
Аргументы
-
Селектор для использования при разрешении элемента DOM.
-
options
FrameLocatorOptions?
(опционально)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
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>
.
-
Возвращает
Name
Добавлено до v1.9Возвращает атрибут name фрейма, как указано в теге.
Если имя пустое, возвращает атрибут id.
Это значение вычисляется один раз при создании фрейма и не будет обновляться, если атрибут изменится позже.
Использование
Frame.Name
Возвращает
Page
Добавлено до v1.9Возвращает страницу, содержащую этот фрейм.
Использование
Frame.Page
Возвращает
ParentFrame
Добавлено до v1.9Родительский фрейм, если он есть. Отсоединенные фреймы и основные фреймы возвращают null
.
Использование
Frame.ParentFrame
Возвращает
SetContentAsync
Добавлено до v1.9Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведения.
Использование
await Frame.SetContentAsync(html, options);
Аргументы
-
HTML-разметка для назначения странице.
-
options
FrameSetContentOptions?
(опционально)-
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'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
TitleAsync
Добавлено до v1.9Возвращает заголовок страницы.
Использование
await Frame.TitleAsync();
Возвращает
Url
Добавлено до v1.9Возвращает URL фрейма.
Использование
Frame.Url
Возвращает
WaitForFunctionAsync
Добавлено до v1.9Возвращает, когда выражение возвращает истинное значение, возвращает это значение.
Использование
Frame.WaitForFunctionAsync() можно использовать для наблюдения за изменением размера области просмотра:
using Microsoft.Playwright;
using System.Threading.Tasks;
class FrameExamples
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Firefox.LaunchAsync();
var page = await browser.NewPageAsync();
await page.SetViewportSizeAsync(50, 50);
await page.MainFrame.WaitForFunctionAsync("window.innerWidth < 100");
}
}
Чтобы передать аргумент в предикат функции frame.waitForFunction
:
var selector = ".foo";
await page.MainFrame.WaitForFunctionAsync("selector => !!document.querySelector(selector)", selector);
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Необязательный аргумент для передачи в выражение.
-
options
FrameWaitForFunctionOptions?
(опционально)-
PollingInterval
[float]? (опционально)#Если указано, то это интервал в миллисекундах, с которым функция будет выполняться. По умолчанию, если опция не указана, выражение выполняется в обратном вызове
requestAnimationFrame
. -
Timeout
[float]? (опционально)#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
WaitForLoadStateAsync
Добавлено до v1.9Ожидает достижения требуемого состояния загрузки.
Это возвращает, когда фрейм достигает требуемого состояния загрузки, по умолчанию load
. Навигация должна быть завершена, когда этот метод вызывается. Если текущий документ уже достиг требуемого состояния, метод разрешается немедленно.
Большую часть времени этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.
Использование
await frame.ClickAsync("button");
await frame.WaitForLoadStateAsync(); // По умолчанию LoadState.Load
Аргументы
-
state
enum LoadState { Load, DOMContentLoaded, NetworkIdle }?
(опционально)#Необязательное состояние загрузки для ожидания, по умолчанию
load
. Если состояние уже достигнуто при загрузке текущего документа, метод разрешается немедленно. Может быть одним из:'load'
- ожидать, пока событиеload
не будет вызвано.'domcontentloaded'
- ожидать, пока событиеDOMContentLoaded
не будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ ожидать, пока не будет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
-
options
FrameWaitForLoadStateOptions?
(опционально)-
Timeout
[float]? (опционально)#Максимальное время операции в миллисекундах, по умолчанию 30 секунд, передайте
0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultNavigationTimeout(), BrowserContext.SetDefaultTimeout(), Page.SetDefaultNavigationTimeout() или Page.SetDefaultTimeout().
-
Возвращает
WaitForURLAsync
Добавлено в: v1.11Ожидает, пока фрейм перейдет на указанный URL.
Использование
await frame.ClickAsync("a.delayed-navigation"); // нажатие на ссылку косвенно вызовет навигацию
await frame.WaitForURLAsync("**/target.html");
Аргументы
-
url
string | Regex | Func<string, bool>#Глобальный шаблон, шаблон регулярного выражения или предикат, получающий URL для сопоставления при ожидании навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации к URL, который точно равен строке.
-
options
FrameWaitForURLOptions?
(опционально)-
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'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
Устаревшие
CheckAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.CheckAsync() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, метод сразу возвращает управление.
- Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.Mouse для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если все шаги не завершились в течение указанного времени ожидания, метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
Использование
await Frame.CheckAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameCheckOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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 Frame.ClickAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameClickOptions?
(опционально)-
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 для двойного клика в центре элемента или в указанной позиции. Если первый клик
dblclick()
вызывает событие навигации, этот метод выбросит исключение.
Если все шаги не завершились в течение указанного времени ожидания, метод выбрасывает TimeoutError. Передача нулевого времени ожидания отключает это.
frame.dblclick()
генерирует два события click
и одно событие dblclick
.
Использование
await Frame.DblClickAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameDblClickOptions?
(опционально)-
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 frame.DispatchEventAsync("button#submit", "click");
Под капотом создается экземпляр события на основе указанного типа, инициализируется с помощью свойств eventInit и генерируется на элементе. События по умолчанию составные
, отменяемые
и всплывают.
Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle
в качестве значения свойства, если хотите, чтобы живые объекты передавались в событие:
// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
var dataTransfer = await frame.EvaluateHandleAsync("() => new DataTransfer()");
await frame.DispatchEventAsync("#source", "dragstart", new { dataTransfer });
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип DOM-события:
"click"
,"dragstart"
и т.д. -
eventInit
EvaluationArgument? (опционально)#Опциональные свойства инициализации, специфичные для события.
-
options
FrameDispatchEventOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
EvalOnSelectorAsync
Добавлено в: v1.9Этот метод не ожидает, пока элемент пройдет проверки действительности, и поэтому может привести к нестабильным тестам. Используйте Locator.EvaluateAsync(), другие вспомогательные методы Locator или утверждения, ориентированные на веб.
Возвращает значение, возвращаемое выражением.
Метод находит элемент, соответствующий указанному селектору в фрейме, и передает его в качестве первого аргумента выражению. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку.
Если выражение возвращает Promise, то Frame.EvalOnSelectorAsync() будет ждать разрешения промиса и вернет его значение.
Использование
var searchValue = await frame.EvalOnSelectorAsync<string>("#search", "el => el.value");
var preloadHref = await frame.EvalOnSelectorAsync<string>("link[rel=preload]", "el => el.href");
var html = await frame.EvalOnSelectorAsync(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello");
Аргументы
-
Селектор для запроса.
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Опциональный аргумент для передачи выражению.
-
options
FrameEvalOnSelectorOptions?
(опционально)
Возвращает
- [object]#
EvalOnSelectorAllAsync
Добавлено в: v1.9В большинстве случаев Locator.EvaluateAllAsync(), другие вспомогательные методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.
Возвращает значение, возвращаемое выражением.
Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента выражению.
Если выражение возвращает Promise, то Frame.EvalOnSelectorAllAsync() будет ждать разрешения промиса и вернет его значение.
Использование
var divsCount = await frame.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 Frame.FillAsync(selector, value, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<input>
,<textarea>
или[contenteditable]
. -
options
FrameFillOptions?
(опционально)-
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 Frame.FocusAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameFocusOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить время ожидания. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
GetAttributeAsync
Добавлено до версии v1.9Используйте основанный на локаторах метод Locator.GetAttributeAsync() вместо этого. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await Frame.GetAttributeAsync(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, для которого нужно получить значение.
-
options
FrameGetAttributeOptions?
(опционально)-
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 Frame.HoverAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameHoverOptions?
(опционально)-
Нужно ли обходить проверки действительности. По умолчанию
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 Frame.InnerHTMLAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameInnerHTMLOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
InnerTextAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.InnerTextAsync() вместо этого. Подробнее о локаторах.
Возвращает element.innerText
.
Использование
await Frame.InnerTextAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameInnerTextOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
InputValueAsync
Добавлено в: v1.13Используйте основанный на локаторах Locator.InputValueAsync() вместо этого. Подробнее о локаторах.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для элементов, не являющихся вводом. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный контрол, возвращает значение контрола.
Использование
await Frame.InputValueAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameInputValueOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsCheckedAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.IsCheckedAsync() вместо этого. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радиокнопкой.
Использование
await Frame.IsCheckedAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameIsCheckedOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsDisabledAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.IsDisabledAsync() вместо этого. Подробнее о локаторах.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
await Frame.IsDisabledAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameIsDisabledOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsEditableAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.IsEditableAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await Frame.IsEditableAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameIsEditableOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout().
-
Возвращает
IsHiddenAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.IsHiddenAsync() вместо этого. Подробнее о локаторах.
Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.
Использование
await Frame.IsHiddenAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameIsHiddenOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#УстарелоЭта опция игнорируется. Frame.IsHiddenAsync() не ждет, пока элемент станет скрытым, и возвращает результат немедленно.
-
Возвращает
IsVisibleAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.IsVisibleAsync() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.
Использование
await Frame.IsVisibleAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
FrameIsVisibleOptions?
(опционально)-
Strict
bool? (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Timeout
[float]? (опционально)#УстарелоЭта опция игнорируется. Frame.IsVisibleAsync() не ждет, пока элемент станет видимым, и возвращает результат немедленно.
-
Возвращает
PressAsync
Добавлено до версии v1.9Используйте основанный на локаторах Locator.PressAsync() вместо этого. Подробнее о локаторах.
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"
. При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Использование
await Frame.PressAsync(selector, key, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeft
илиa
. -
options
FramePressOptions?
(опционально)-
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Используйте основанный на локаторах Frame.Locator() вместо этого. Подробнее о локаторах.
Возвращает ElementHandle, указывающий на элемент фрейма.
Использование ElementHandle не рекомендуется, используйте объекты Locator и веб-первичные утверждения вместо этого.
Метод находит элемент, соответствующий указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает null
.
Использование
await Frame.QuerySelectorAsync(selector, options);
Аргументы
-
Селектор для запроса.
-
options
FrameQuerySelectorOptions?
(опционально)
Возвращает
QuerySelectorAllAsync
Добавлено в: v1.9Используйте основанный на локаторах Frame.Locator() вместо этого. Подробнее о локаторах.
Возвращает ElementHandles, указывающие на элементы фрейма.
Использование ElementHandle не рекомендуется, используйте объекты Locator вместо этого.
Метод находит все элементы, соответствующие указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает пустой массив.
Использование
await Frame.QuerySelectorAllAsync(selector);
Аргументы
Возвращает
RunAndWaitForNavigationAsync
Добавлено до версии v1.9Этот метод по своей природе является гонкой, пожалуйста, используйте Frame.WaitForURLAsync() вместо этого.
Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация разрешится с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация разрешится с null
.
Использование
Этот метод ожидает, пока фрейм перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:
await frame.RunAndWaitForNavigationAsync(async () =>
{
// Клик по ссылке косвенно вызовет навигацию.
await frame.ClickAsync("a.delayed-navigation");
});
// Разрешается после завершения навигации
Использование History API для изменения URL считается навигацией.
Аргументы
-
action
Func<Task> Добавлено в: v1.12#Действие, которое вызывает событие.
-
options
FrameRunAndWaitForNavigationOptions?
(опционально)-
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Этот метод по своей природе является гонкой, пожалуйста, используйте Frame.WaitForURLAsync() вместо этого.
Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация разрешится с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация разрешится с null
.
Использование
Этот метод ожидает, пока фрейм перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:
await frame.RunAndWaitForNavigationAsync(async () =>
{
// Клик по ссылке косвенно вызовет навигацию.
await frame.ClickAsync("a.delayed-navigation");
});
// Разрешается после завершения навигации
Использование History API для изменения URL считается навигацией.
Аргументы
options
FrameRunAndWaitForNavigationOptions?
(опционально)-
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 frame.SelectOptionAsync("select#colors", new[] { "blue" });
// одиночный выбор, соответствующий как значению, так и метке
await frame.SelectOptionAsync("select#colors", new[] { new SelectOptionValue() { Label = "blue" } });
// множественный выбор
await frame.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
FrameSelectOptionOptions?
(опционально)-
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 Frame.SetCheckedAsync(selector, checked, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Установить или снять флажок.
-
options
FrameSetCheckedOptions?
(опционально)-
Следует ли обходить проверки действительности. По умолчанию
false
. -
NoWaitAfter
bool? (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Position
Position? (опционально)#-
X
[float] -
Y
[float]
Точка, используемая относительно верхнего левого угла элемента. Если не указано, используется видимая точка элемента.
-
-
Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Timeout
[float]? (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.SetDefaultTimeout() или Page.SetDefaultTimeout() методы. -
Если установлено, этот метод выполняет только проверки действительности и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
SetInputFilesAsync
Добавлено до v1.9Используйте основанный на локаторах метод Locator.SetInputFilesAsync() вместо этого. Подробнее о локаторах.
Устанавливает значение элемента ввода файла на указанные пути к файлам или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы.
Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный контрол, будет использован контрол.
Использование
await Frame.SetInputFilesAsync(selector, files, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
files
string | IEnumerable<string> |FilePayload
| IEnumerable<FilePayload
># -
options
FrameSetInputFilesOptions?
(опционально)-
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. Передача нулевого тайм-аута отключает это.
frame.tap()
требует, чтобы опция hasTouch
контекста браузера была установлена в true.
Использование
await Frame.TapAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
FrameTapOptions?
(опционально)-
Следует ли обходить проверки действительности. По умолчанию
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 Frame.TextContentAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
FrameTextContentOptions?
(опционально)-
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
для каждого символа в тексте. frame.type
можно использовать для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Frame.FillAsync().
Чтобы нажать специальную клавишу, такую как Control
или ArrowDown
, используйте Keyboard.PressAsync().
Использование
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
options
FrameTypeOptions?
(опционально)-
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 Frame.UncheckAsync(selector, options);
Аргументы
-
Селектор для поиска элемента. Если есть несколько элементов, удовлетворяющих селектору, будет использован первый.
-
options
FrameUncheckOptions?
(опционально)-
Следует ли обходить проверки действительности. По умолчанию
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 Main()
{
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);
element = await page.MainFrame.WaitForSelectorAsync("img");
Console.WriteLine($"Загружено изображение: {await element.GetAttributeAsync("src")}");
}
}
}
Аргументы
-
Селектор для поиска.
-
options
FrameWaitForSelectorOptions?
(опционально)-
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 и веб-утверждения, которые ожидают автоматически.
Ожидает указанный тайм-аут в миллисекундах.
Обратите внимание, что frame.waitForTimeout()
следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие вместо этого.
Использование
await Frame.WaitForTimeoutAsync(timeout);
Аргументы
-
timeout
[float]#Тайм-аут для ожидания
Возвращает