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

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 frame.AddScriptTagAsync

Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.

Добавляет тег <script> на страницу с указанным URL или содержимым.

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

await Frame.AddScriptTagAsync(options);

Аргументы

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

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

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

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

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

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

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

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

Возвращает


AddStyleTagAsync

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

Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS-контент был внедрен в фрейм.

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

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

await Frame.AddStyleTagAsync(options);

Аргументы

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

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

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

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

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

      URL тега <link>.

Возвращает


ChildFrames

Добавлено до v1.9 frame.ChildFrames

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

Frame.ChildFrames

Возвращает


ContentAsync

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

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

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

await Frame.ContentAsync();

Возвращает


DragAndDropAsync

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

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

await Frame.DragAndDropAsync(source, target, options);

Аргументы

  • source string#

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

  • target string#

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

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

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

      Нужно ли обходить проверки 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().

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

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

Возвращает


EvaluateAsync

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

Возвращает значение, возвращаемое 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();

Аргументы

  • expression string#

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

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

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

Возвращает

  • [object]#

EvaluateHandleAsync

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

Возвращает значение, возвращаемое 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();

Аргументы

  • expression string#

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

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

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

Возвращает


FrameElementAsync

Добавлено до v1.9 frame.FrameElementAsync

Возвращает обработчик элемента frame или iframe, который соответствует этому фрейму.

Это обратное действие к ElementHandle.ContentFrameAsync(). Обратите внимание, что возвращаемый обработчик фактически принадлежит родительскому фрейму.

Этот метод выбрасывает ошибку, если фрейм был отсоединен до того, как frameElement() вернет значение.

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

var frameElement = await frame.FrameElementAsync();
var contentFrame = await frameElement.ContentFrameAsync();
Console.WriteLine(frame == contentFrame); // -> True

Возвращает


FrameLocator

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

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

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

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

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

Аргументы

  • selector string#

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

Возвращает


GetByAltText

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

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

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

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

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

Аргументы

  • text string | Regex#

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

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

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

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

Возвращает


GetByLabel

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

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

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

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

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

Аргументы

  • text string | Regex#

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

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

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

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

Возвращает


GetByPlaceholder

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

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

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

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

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

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

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

Аргументы

  • text string | Regex#

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

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

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

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

Возвращает


GetByRole

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

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

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

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

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

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

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

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

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

Аргументы

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

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

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

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

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

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

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

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

      примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает

Детали

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

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


GetByTestId

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

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

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

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

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

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

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

Аргументы

  • testId string | Regex#

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

Возвращает

Детали

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


GetByText

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

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

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

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

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

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

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

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

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

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

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

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

Аргументы

  • text string | Regex#

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

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

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

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

Возвращает

Детали

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

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


GetByTitle

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

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

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

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

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

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

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

Аргументы

  • text string | Regex#

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

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

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

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

Возвращает


GotoAsync

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

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

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

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

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

примечание

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

примечание

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

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

await Frame.GotoAsync(url, options);

Аргументы

  • url string#

    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 frame.IsDetached

Возвращает true, если фрейм был отсоединен, или false в противном случае.

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

Frame.IsDetached

Возвращает


IsEnabledAsync

Добавлено до v1.9 frame.IsEnabledAsync

Возвращает, является ли элемент включенным.

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

await Frame.IsEnabledAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


Locator

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

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

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

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

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

Frame.Locator(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает


Name

Добавлено до v1.9 frame.Name

Возвращает атрибут name фрейма, как указано в теге.

Если имя пустое, возвращает атрибут id.

примечание

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

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

Frame.Name

Возвращает


Page

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

Возвращает страницу, содержащую этот фрейм.

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

Frame.Page

Возвращает


ParentFrame

Добавлено до v1.9 frame.ParentFrame

Родительский фрейм, если он есть. Отсоединенные фреймы и основные фреймы возвращают null.

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

Frame.ParentFrame

Возвращает


SetContentAsync

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

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

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

await Frame.SetContentAsync(html, options);

Аргументы

  • html string#

    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 frame.TitleAsync

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

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

await Frame.TitleAsync();

Возвращает


Url

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

Возвращает URL фрейма.

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

Frame.Url

Возвращает


WaitForFunctionAsync

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

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

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

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);

Аргументы

  • expression string#

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

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

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

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

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

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

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

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

Возвращает


WaitForLoadStateAsync

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

Ожидает достижения требуемого состояния загрузки.

Это возвращает, когда фрейм достигает требуемого состояния загрузки, по умолчанию 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? (опционально)

Возвращает


WaitForURLAsync

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

Ожидает, пока фрейм перейдет на указанный 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 frame.CheckAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.CheckAsync() вместо этого. Подробнее о локаторах.

Этот метод отмечает элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, метод сразу возвращает управление.
  3. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте Page.Mouse для нажатия в центре элемента.
  6. Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.

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

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

await Frame.CheckAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


ClickAsync

Добавлено до версии v1.9 frame.ClickAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.ClickAsync() вместо этого. Подробнее о локаторах.

Этот метод кликает по элементу, соответствующему селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для нажатия в центре элемента или в указанной позиции.
  5. Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если не установлена опция NoWaitAfter.

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

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

await Frame.ClickAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Button enum MouseButton { Left, Right, Middle }? (опционально)#

      По умолчанию left.

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

      По умолчанию 1. См. UIEvent.detail.

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

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

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

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

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


DblClickAsync

Добавлено до версии v1.9 frame.DblClickAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.DblClickAsync() вместо этого. Подробнее о локаторах.

Этот метод выполняет двойной клик по элементу, соответствующему селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для двойного клика в центре элемента или в указанной позиции. Если первый клик dblclick() вызывает событие навигации, этот метод выбросит исключение.

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

примечание

frame.dblclick() генерирует два события click и одно событие dblclick.

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

await Frame.DblClickAsync(selector, options);

Аргументы

  • selector string#

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

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

    • Button enum MouseButton { Left, Right, Middle }? (опционально)#

      По умолчанию left.

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

      Время ожидания между mousedown и mouseup в миллисекундах. По умолчанию 0.

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

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

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


DispatchEventAsync

Добавлено до версии v1.9 frame.DispatchEventAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.DispatchEventAsync() вместо этого. Подробнее о локаторах.

Пример ниже генерирует событие click на элементе. Независимо от состояния видимости элемента, click генерируется. Это эквивалентно вызову element.click().

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

await frame.DispatchEventAsync("button#submit", "click");

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

Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:

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

// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
var dataTransfer = await frame.EvaluateHandleAsync("() => new DataTransfer()");
await frame.DispatchEventAsync("#source", "dragstart", new { dataTransfer });

Аргументы

  • selector string#

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

  • type string#

    Тип DOM-события: "click", "dragstart" и т.д.

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

    Опциональные свойства инициализации, специфичные для события.

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

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

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

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

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

Возвращает


EvalOnSelectorAsync

Добавлено в: v1.9 frame.EvalOnSelectorAsync
Не рекомендуется

Этот метод не ожидает, пока элемент пройдет проверки действительности, и поэтому может привести к нестабильным тестам. Используйте 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");

Аргументы

  • selector string#

    Селектор для запроса.

  • expression string#

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

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

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

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

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

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

Возвращает

  • [object]#

EvalOnSelectorAllAsync

Добавлено в: v1.9 frame.EvalOnSelectorAllAsync
Не рекомендуется

В большинстве случаев Locator.EvaluateAllAsync(), другие вспомогательные методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.

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

Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента выражению.

Если выражение возвращает Promise, то Frame.EvalOnSelectorAllAsync() будет ждать разрешения промиса и вернет его значение.

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

var divsCount = await frame.EvalOnSelectorAllAsync<bool>("div", "(divs, min) => divs.length >= min", 10);

Аргументы

  • selector string#

    Селектор для запроса.

  • expression string#

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

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

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

Возвращает

  • [object]#

FillAsync

Добавлено до версии v1.9 frame.FillAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.FillAsync() вместо этого. Подробнее о локаторах.

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

Если целевой элемент не является элементом <input>, <textarea> или [contenteditable], этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>, который имеет связанный контрол, будет заполнен контрол.

Для отправки более детализированных событий клавиатуры используйте Locator.PressSequentiallyAsync().

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

await Frame.FillAsync(selector, value, options);

Аргументы

  • selector string#

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

  • value string#

    Значение для заполнения элемента <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 frame.FocusAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.FocusAsync() вместо этого. Подробнее о локаторах.

Этот метод получает элемент с селектором и фокусирует его. Если нет элемента, соответствующего селектору, метод ждет, пока соответствующий элемент не появится в DOM.

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

await Frame.FocusAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


GetAttributeAsync

Добавлено до версии v1.9 frame.GetAttributeAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.GetAttributeAsync() вместо этого. Подробнее о локаторах.

Возвращает значение атрибута элемента.

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

await Frame.GetAttributeAsync(selector, name, options);

Аргументы

  • selector string#

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

  • name string#

    Имя атрибута, для которого нужно получить значение.

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

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

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

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

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

Возвращает


HoverAsync

Добавлено до версии v1.9 frame.HoverAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.HoverAsync() вместо этого. Подробнее о локаторах.

Этот метод наводит курсор на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Mouse для наведения курсора на центр элемента или на указанную позицию.

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

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

await Frame.HoverAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


InnerHTMLAsync

Добавлено до версии v1.9 frame.InnerHTMLAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InnerHTMLAsync() вместо этого. Подробнее о локаторах.

Возвращает element.innerHTML.

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

await Frame.InnerHTMLAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


InnerTextAsync

Добавлено до версии v1.9 frame.InnerTextAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InnerTextAsync() вместо этого. Подробнее о локаторах.

Возвращает element.innerText.

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

await Frame.InnerTextAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


InputValueAsync

Добавлено в: v1.13 frame.InputValueAsync
Не рекомендуется

Используйте основанный на локаторах Locator.InputValueAsync() вместо этого. Подробнее о локаторах.

Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.

Выбрасывает исключение для элементов, не являющихся вводом. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный контрол, возвращает значение контрола.

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

await Frame.InputValueAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


IsCheckedAsync

Добавлено до версии v1.9 frame.IsCheckedAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsCheckedAsync() вместо этого. Подробнее о локаторах.

Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является флажком или радиокнопкой.

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

await Frame.IsCheckedAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


IsDisabledAsync

Добавлено до версии v1.9 frame.IsDisabledAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsDisabledAsync() вместо этого. Подробнее о локаторах.

Возвращает, отключен ли элемент, противоположность enabled.

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

await Frame.IsDisabledAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


IsEditableAsync

Добавлено до версии v1.9 frame.IsEditableAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsEditableAsync() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент редактируемым.

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

await Frame.IsEditableAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


IsHiddenAsync

Добавлено до версии v1.9 frame.IsHiddenAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsHiddenAsync() вместо этого. Подробнее о локаторах.

Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.

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

await Frame.IsHiddenAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

      Устарело

      Эта опция игнорируется. Frame.IsHiddenAsync() не ждет, пока элемент станет скрытым, и возвращает результат немедленно.

Возвращает


IsVisibleAsync

Добавлено до версии v1.9 frame.IsVisibleAsync
Не рекомендуется

Используйте основанный на локаторах Locator.IsVisibleAsync() вместо этого. Подробнее о локаторах.

Возвращает, является ли элемент видимым. selector, который не соответствует ни одному элементу, считается невидимым.

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

await Frame.IsVisibleAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

      Устарело

      Эта опция игнорируется. Frame.IsVisibleAsync() не ждет, пока элемент станет видимым, и возвращает результат немедленно.

Возвращает


PressAsync

Добавлено до версии v1.9 frame.PressAsync
Не рекомендуется

Используйте основанный на локаторах 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);

Аргументы

  • selector string#

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

  • key string#

    Имя клавиши для нажатия или символ для генерации, например, 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.QuerySelectorAsync
Не рекомендуется

Используйте основанный на локаторах Frame.Locator() вместо этого. Подробнее о локаторах.

Возвращает ElementHandle, указывающий на элемент фрейма.

предупреждение

Использование ElementHandle не рекомендуется, используйте объекты Locator и веб-первичные утверждения вместо этого.

Метод находит элемент, соответствующий указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает null.

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

await Frame.QuerySelectorAsync(selector, options);

Аргументы

  • selector string#

    Селектор для запроса.

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

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

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

Возвращает


QuerySelectorAllAsync

Добавлено в: v1.9 frame.QuerySelectorAllAsync
Не рекомендуется

Используйте основанный на локаторах Frame.Locator() вместо этого. Подробнее о локаторах.

Возвращает ElementHandles, указывающие на элементы фрейма.

предупреждение

Использование ElementHandle не рекомендуется, используйте объекты Locator вместо этого.

Метод находит все элементы, соответствующие указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает пустой массив.

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

await Frame.QuerySelectorAllAsync(selector);

Аргументы

  • selector string#

    Селектор для запроса.

Возвращает


RunAndWaitForNavigationAsync

Добавлено до версии v1.9 frame.RunAndWaitForNavigationAsync
Устарело

Этот метод по своей природе является гонкой, пожалуйста, используйте 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.WaitForNavigationAsync
Устарело

Этот метод по своей природе является гонкой, пожалуйста, используйте 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 frame.SelectOptionAsync
Не рекомендуется

Используйте основанный на локаторах метод 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" });

Аргументы

  • selector string#

    Селектор для поиска.

  • 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 frame.SetCheckedAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.SetCheckedAsync() вместо этого. Подробнее о локаторах.

Этот метод устанавливает или снимает флажок с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
  3. Если элемент уже имеет правильное состояние, этот метод возвращается немедленно.
  4. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  5. Прокрутите элемент в видимую область, если это необходимо.
  6. Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
  7. Убедитесь, что элемент теперь отмечен или не отмечен. Если нет, этот метод вызывает ошибку.

Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

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

await Frame.SetCheckedAsync(selector, checked, options);

Аргументы

  • selector string#

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

  • checkedState bool#

    Установить или снять флажок.

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

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

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

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


SetInputFilesAsync

Добавлено до v1.9 frame.SetInputFilesAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.SetInputFilesAsync() вместо этого. Подробнее о локаторах.

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

Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный контрол, будет использован контрол.

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

await Frame.SetInputFilesAsync(selector, files, options);

Аргументы

  • selector string#

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

  • files string | IEnumerable<string> | FilePayload | IEnumerable<FilePayload>#

    • Name string

      Имя файла

    • MimeType string

      Тип файла

    • Buffer byte[]

      Содержимое файла

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

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

      Устарело

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

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

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

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

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

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

Возвращает


TapAsync

Добавлено до v1.9 frame.TapAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.TapAsync() вместо этого. Подробнее о локаторах.

Этот метод выполняет нажатие на элемент, соответствующий селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.Touchscreen, чтобы нажать в центре элемента или в указанной позиции.

Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

примечание

frame.tap() требует, чтобы опция hasTouch контекста браузера была установлена в true.

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

await Frame.TapAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

    • Modifiers IEnumerable?<enum KeyboardModifier { Alt, Control, ControlOrMeta, Meta, Shift }> (опционально)#

      Модификаторы клавиш для нажатия. Обеспечивает, чтобы только эти модификаторы были нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


TextContentAsync

Добавлено до v1.9 frame.TextContentAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.TextContentAsync() вместо этого. Подробнее о локаторах.

Возвращает element.textContent.

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

await Frame.TextContentAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

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

Возвращает


TypeAsync

Добавлено до v1.9 frame.TypeAsync
Устарело

В большинстве случаев следует использовать Locator.FillAsync() вместо этого. Вам нужно нажимать клавиши по одной, только если на странице есть специальная обработка клавиатуры - в этом случае используйте Locator.PressSequentiallyAsync().

Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. frame.type можно использовать для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте Frame.FillAsync().

Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте Keyboard.PressAsync().

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

Аргументы

  • selector string#

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

  • text string#

    Текст для ввода в фокусированный элемент.

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

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

      Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.

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

      Устарело

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

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

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

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

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

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

Возвращает


UncheckAsync

Добавлено до v1.9 frame.UncheckAsync
Не рекомендуется

Используйте основанный на локаторах метод Locator.UncheckAsync() вместо этого. Подробнее о локаторах.

Этот метод снимает флажок с элемента, соответствующего селектору, выполняя следующие шаги:

  1. Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку. Если элемент уже снят, этот метод возвращается немедленно.
  3. Подождите, пока не будут выполнены проверки действительности на найденном элементе, если только не установлена опция Force. Если элемент отсоединяется во время проверок, все действие повторяется.
  4. Прокрутите элемент в видимую область, если это необходимо.
  5. Используйте Page.Mouse, чтобы щелкнуть в центре элемента.
  6. Убедитесь, что элемент теперь снят. Если нет, этот метод вызывает ошибку.

Если все шаги вместе не завершились в течение указанного Timeout, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.

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

await Frame.UncheckAsync(selector, options);

Аргументы

  • selector string#

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

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

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

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

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

      Устарело

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

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

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

      • X [float]

      • Y [float]

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

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

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

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

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

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

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

Возвращает


WaitForSelectorAsync

Добавлено до v1.9 frame.WaitForSelectorAsync
Не рекомендуется

Используйте веб-утверждения, которые утверждают видимость, или основанный на локаторах метод Locator.WaitForAsync() вместо этого. Подробнее о локаторах.

Возвращает, когда элемент, указанный селектором, удовлетворяет опции State. Возвращает null, если ожидание для hidden или detached.

примечание

Playwright автоматически ожидает, пока элемент будет готов перед выполнением действия. Использование объектов Locator и веб-первых утверждений делает код свободным от ожидания селектора.

Ожидает, пока селектор не удовлетворит опцию State (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если в момент вызова метода селектор уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение Timeout миллисекунд, функция вызовет ошибку.

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

Этот метод работает через навигации:

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

class FrameExamples
{
public static async Task 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")}");
}
}
}

Аргументы

  • selector string#

    Селектор для поиска.

  • 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 frame.WaitForTimeoutAsync
Не рекомендуется

Никогда не ждите тайм-аута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ожидают автоматически.

Ожидает указанный тайм-аут в миллисекундах.

Обратите внимание, что frame.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие вместо этого.

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

await Frame.WaitForTimeoutAsync(timeout);

Аргументы

  • timeout [float]#

    Тайм-аут для ожидания

Возвращает