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

Frame

В любой момент времени страница предоставляет текущее дерево фреймов через методы Page.mainFrame() и Frame.childFrames().

Жизненный цикл объекта Frame контролируется тремя событиями, отправляемыми на объекте страницы:

  • Page.onFrameAttached(handler) - срабатывает, когда фрейм присоединяется к странице. Фрейм может быть присоединен к странице только один раз.
  • Page.onFrameNavigated(handler) - срабатывает, когда фрейм совершает навигацию на другой URL.
  • Page.onFrameDetached(handler) - срабатывает, когда фрейм отсоединяется от страницы. Фрейм может быть отсоединен от страницы только один раз.

Пример вывода дерева фреймов:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType firefox = playwright.firefox();
Browser browser = firefox.launch();
Page page = browser.newPage();
page.navigate("https://www.google.com/chrome/browser/canary.html");
dumpFrameTree(page.mainFrame(), "");
browser.close();
}
}
static void dumpFrameTree(Frame frame, String indent) {
System.out.println(indent + frame.url());
for (Frame child : frame.childFrames()) {
dumpFrameTree(child, indent + " ");
}
}
}

Methods

addScriptTag

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

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

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

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

Frame.addScriptTag();
Frame.addScriptTag(options);

Аргументы

  • options Frame.AddScriptTagOptions (опционально)
    • setContent String (опционально)#

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

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

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

    • setType String (опционально)#

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

    • setUrl String (опционально)#

      URL скрипта для добавления.

Возвращает


addStyleTag

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

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

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

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

Frame.addStyleTag();
Frame.addStyleTag(options);

Аргументы

  • options Frame.AddStyleTagOptions (опционально)
    • setContent String (опционально)#

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

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

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

    • setUrl String (опционально)#

      URL тега <link>.

Возвращает


childFrames

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

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

Frame.childFrames();

Возвращает


content

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

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

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

Frame.content();

Возвращает


dragAndDrop

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

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

Frame.dragAndDrop(source, target);
Frame.dragAndDrop(source, target, options);

Аргументы

  • source String#

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

  • target String#

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

  • options Frame.DragAndDropOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально)#

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

Возвращает


evaluate

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

Возвращает возвращаемое значение expression.

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

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

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

Object result = frame.evaluate("([x, y]) => {\n" +
" return Promise.resolve(x * y);\n" +
"}", Arrays.asList(7, 8));
System.out.println(result); // prints "56"

Строка также может быть передана вместо функции.

System.out.println(frame.evaluate("1 + 2")); // prints "3"

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

ElementHandle bodyHandle = frame.evaluate("document.body");
String html = (String) frame.evaluate("([body, suffix]) => body.innerHTML + suffix", Arrays.asList(bodyHandle, "hello"));
bodyHandle.dispose();

Аргументы

  • expression String#

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

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

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

Возвращает


evaluateHandle

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

Возвращает возвращаемое значение expression как JSHandle.

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

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

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

// Handle for the window object.
JSHandle aWindowHandle = frame.evaluateHandle("() => Promise.resolve(window)");

Строка также может быть передана вместо функции.

JSHandle aHandle = frame.evaluateHandle("document"); // Handle for the "document".

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

JSHandle aHandle = frame.evaluateHandle("() => document.body");
JSHandle resultHandle = frame.evaluateHandle("([body, suffix]) => body.innerHTML + suffix", Arrays.asList(aHandle, "hello"));
System.out.println(resultHandle.jsonValue());
resultHandle.dispose();

Аргументы

  • expression String#

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

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

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

Возвращает


frameElement

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

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

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

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

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

ElementHandle frameElement = frame.frameElement();
Frame contentFrame = frameElement.contentFrame();
System.out.println(frame == contentFrame); // -> true

Возвращает


frameLocator

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

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

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

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

Locator locator = frame.frameLocator("#my-iframe").getByText("Submit");
locator.click();

Аргументы

  • selector String#

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

Возвращает


getByAltText

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

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

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

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

<img alt='Playwright logo'>
page.getByAltText("Playwright logo").click();

Аргументы

  • text String | Pattern#

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

  • options Frame.GetByAltTextOptions (опционально)

    • setExact boolean (опционально)#

      Нужно ли искать точное совпадение: с учетом регистра и всей строки. По умолчанию 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">
page.getByLabel("Username").fill("john");
page.getByLabel("Password").fill("secret");

Аргументы

  • text String | Pattern#

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

  • options Frame.GetByLabelOptions (опционально)

    • setExact boolean (опционально)#

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

Возвращает


getByPlaceholder

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

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

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

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

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

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

page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");

Аргументы

  • text String | Pattern#

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

  • options Frame.GetByPlaceholderOptions (опционально)

    • setExact boolean (опционально)#

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

Возвращает


getByRole

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

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

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

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

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

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

assertThat(page
.getByRole(AriaRole.HEADING,
new Page.GetByRoleOptions().setName("Sign up")))
.isVisible();

page.getByRole(AriaRole.CHECKBOX,
new Page.GetByRoleOptions().setName("Subscribe"))
.check();

page.getByRole(AriaRole.BUTTON,
new Page.GetByRoleOptions().setName(
Pattern.compile("submit", Pattern.CASE_INSENSITIVE)))
.click();

Аргументы

  • 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 Frame.GetByRoleOptions (опционально)

    • setChecked boolean (опционально)#

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

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

    • setDisabled boolean (опционально)#

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

      примечание

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

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

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

    • setExpanded boolean (опционально)#

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

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

    • setIncludeHidden boolean (опционально)#

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

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

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

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

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

    • setName String | Pattern (опционально)#

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

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

    • setPressed boolean (опционально)#

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

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

    • setSelected boolean (опционально)#

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

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

Возвращает

Детали

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

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


getByTestId

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

Находит элемент по test id.

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

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

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

Вы можете найти элемент по его test id:

page.getByTestId("directions").click();

Аргументы

  • testId String | Pattern#

    Идентификатор, по которому будет найден элемент.

Возвращает

Детали

По умолчанию в качестве test id используется атрибут 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 Page.GetByTextOptions().setExact(true));

// Совпадает с обоими <div>
page.getByText(Pattern.compile("Hello"));

// Совпадает со вторым <div>
page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE));

Аргументы

  • text String | Pattern#

    Текст, по которому будет найден элемент.

  • options Frame.GetByTextOptions (необязательно)

    • setExact boolean (необязательно)#

      Следует ли искать точное совпадение: с учётом регистра и по всей строке. По умолчанию — 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>

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

assertThat(page.getByTitle("Issues count")).hasText("25 issues");

Аргументы

  • text String | Pattern#

    Текст, по которому будет найден элемент.

  • options Frame.GetByTitleOptions (необязательно)

    • setExact boolean (необязательно)#

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

Возвращает


isDetached

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

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

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

Frame.isDetached();

Возвращает


isEnabled

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

Возвращает, является ли элемент доступным для взаимодействия (enabled).

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

Frame.isEnabled(selector);
Frame.isEnabled(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsEnabledOptions (необязательно)

    • setStrict boolean (необязательно) Добавлено в: v1.14#

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

    • setTimeout double (необязательно)#

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

Возвращает


locator

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

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

Подробнее о локаторах.

Подробнее о локаторах.

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

Frame.locator(selector);
Frame.locator(selector, options);

Аргументы

  • selector String#

    Селектор, который используется для поиска DOM-элемента.

  • options Frame.LocatorOptions (необязательно)

    • setHas Locator (необязательно)#

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

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

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

    • setHasNot Locator (необязательно) Добавлено в: v1.33#

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

      Внешний и вложенный локаторы должны находиться в одном фрейме. Вложенный локатор не должен содержать FrameLocator.

    • setHasNotText String | Pattern (необязательно) Добавлено в: v1.33#

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

    • setHasText String | Pattern (необязательно)#

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

Возвращает


name

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

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

Если name не задан, возвращает значение атрибута id.

примечание

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

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

Frame.name();

Возвращает


navigate

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

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

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

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

Метод не выбрасывает ошибку при получении любого корректного HTTP-статуса от удалённого сервера, включая 404 "Not Found" и 500 "Internal Server Error". Статус ответа можно получить, вызвав Response.status().

примечание

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

примечание

В headless-режиме навигация к PDF-документу не поддерживается. См. соответствующую задачу в Chromium.

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

Frame.navigate(url);
Frame.navigate(url, options);

Аргументы

  • url String#

    URL, по которому следует перейти. Должен содержать схему, например https://.

  • options Frame.NavigateOptions (необязательно)

    • setReferer String (необязательно)#

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

    • setTimeout double (необязательно)#

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

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (необязательно)#

      Указывает, когда считать навигацию завершённой. Значение по умолчанию — load. Возможные значения:

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

Возвращает


page

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

Возвращает страницу, в которой находится данный фрейм.

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

Frame.page();

Возвращает


parentFrame

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

Родительский фрейм, если он есть. Для отсоединённых и главных фреймов возвращается null.

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

Frame.parentFrame();

Возвращает


setContent

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

Этот метод внутренне вызывает document.write(), унаследовав все его особенности и поведение.

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

Frame.setContent(html);
Frame.setContent(html, options);

Аргументы

  • html String#

    HTML-разметка, которая будет установлена на странице.

  • options Frame.SetContentOptions (необязательно)

    • setTimeout double (необязательно)#

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

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (необязательно)#

      Указывает, когда считать операцию завершённой. По умолчанию — load. Возможные значения:

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

Возвращает


title

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

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

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

Frame.title();

Возвращает


url

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

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

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

Frame.url();

Возвращает


waitForFunction

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

Возвращает управление, когда выражение возвращает truthy-значение, и возвращает это значение.

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

Метод Frame.waitForFunction() можно использовать, например, для отслеживания изменения размера области просмотра:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType firefox = playwright.firefox();
Browser browser = firefox.launch();
Page page = browser.newPage();
page.setViewportSize(50, 50);
page.mainFrame().waitForFunction("window.innerWidth < 100");
browser.close();
}
}
}

Чтобы передать аргумент в предикат функции frame.waitForFunction:

String selector = ".foo";
frame.waitForFunction("selector => !!document.querySelector(selector)", selector);

Аргументы

  • expression String#

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

  • arg EvaluationArgument (необязательно)#

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

  • options Frame.WaitForFunctionOptions (необязательно)

    • setPollingInterval double (необязательно)#

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

    • setTimeout double (необязательно)#

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

Возвращает


waitForLoadState

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

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

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

примечание

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

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

frame.click("button"); // Клик вызывает навигацию.
frame.waitForLoadState(); // По умолчанию ожидается состояние "load".

Аргументы

  • state enum LoadState { LOAD, DOMCONTENTLOADED, NETWORKIDLE } (необязательно)#

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

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

Возвращает


waitForURL

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

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

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

frame.click("a.delayed-navigation"); // Клик по ссылке, вызывающей отложенную навигацию
frame.waitForURL("**/target.html");

Аргументы

  • url String | Pattern | Predicate<String>#

    Glob-шаблон, регулярное выражение или предикат, принимающий [URL] — для сопоставления ожидаемого перехода. Если передана строка без спецсимволов шаблона, метод будет ждать точного соответствия.

  • options Frame.WaitForURLOptions (необязательно)

    • setTimeout double (необязательно)#

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

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (необязательно)#

      Указывает, когда считать навигацию завершённой. По умолчанию — load. Возможные значения:

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

Возвращает


Устарело

check

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

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

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

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

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

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

Frame.check(selector);
Frame.check(selector, options);

Аргументы

  • selector String#

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

  • options Frame.CheckOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


click

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

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

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

  1. Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
  2. Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
  3. Прокрутите элемент в видимую область, если это необходимо.
  4. Используйте Page.mouse(), чтобы кликнуть в центр элемента или в указанную setPosition.
  5. Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция setNoWaitAfter.

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

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

Frame.click(selector);
Frame.click(selector, options);

Аргументы

  • selector String#

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

  • options Frame.ClickOptions (опционально)

    • setButton enum MouseButton { LEFT, RIGHT, MIDDLE } (опционально)#

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

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

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

    • setDelay double (опционально)#

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

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


dblclick

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

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

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

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

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

примечание

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

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

Frame.dblclick(selector);
Frame.dblclick(selector, options);

Аргументы

  • selector String#

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

  • options Frame.DblclickOptions (опционально)

    • setButton enum MouseButton { LEFT, RIGHT, MIDDLE } (опционально)#

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

    • setDelay double (опционально)#

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

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


dispatchEvent

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

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

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

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

frame.dispatchEvent("button#submit", "click");

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

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

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

// Обратите внимание, что вы можете создать DataTransfer только в Chromium и Firefox
JSHandle dataTransfer = frame.evaluateHandle("() => new DataTransfer()");
Map<String, Object> arg = new HashMap<>();
arg.put("dataTransfer", dataTransfer);
frame.dispatchEvent("#source", "dragstart", arg);

Аргументы

  • selector String#

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

  • type String#

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

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

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

  • options Frame.DispatchEventOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


evalOnSelector

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

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

Возвращает возвращаемое значение expression.

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

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

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

String searchValue = (String) frame.evalOnSelector("#search", "el => el.value");
String preloadHref = (String) frame.evalOnSelector("link[rel=preload]", "el => el.href");
String html = (String) frame.evalOnSelector(".main-container", "(e, suffix) => e.outerHTML + suffix", "hello");

Аргументы

  • selector String#

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

  • expression String#

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

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

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

  • options Frame.EvalOnSelectorOptions (опционально)

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

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

Возвращает


evalOnSelectorAll

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

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

Возвращает возвращаемое значение expression.

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

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

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

boolean divsCounts = (boolean) page.evalOnSelectorAll("div", "(divs, min) => divs.length >= min", 10);

Аргументы

  • selector String#

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

  • expression String#

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

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

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

Возвращает


fill

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

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

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

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

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

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

Frame.fill(selector, value);
Frame.fill(selector, value, options);

Аргументы

  • selector String#

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

  • value String#

    Значение для заполнения элемента <input>, <textarea> или [contenteditable].

  • options Frame.FillOptions (опционально)

    • setForce boolean (опционально) Добавлено в: v1.13#

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

    • setNoWaitAfter boolean (опционально)#

      Устарело

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

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

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

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

    • setTimeout double (опционально)#

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

Возвращает


focus

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

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

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

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

Frame.focus(selector);
Frame.focus(selector, options);

Аргументы

  • selector String#

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

  • options Frame.FocusOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


getAttribute

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

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

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

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

Frame.getAttribute(selector, name);
Frame.getAttribute(selector, name, options);

Аргументы

  • selector String#

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

  • name String#

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

  • options Frame.GetAttributeOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


hover

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

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

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

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

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

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

Frame.hover(selector);
Frame.hover(selector, options);

Аргументы

  • selector String#

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

  • options Frame.HoverOptions (опционально)

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

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

      Устарело

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


innerHTML

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

Use locator-based Locator.innerHTML() instead. Read more about locators.

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

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

Frame.innerHTML(selector);
Frame.innerHTML(selector, options);

Аргументы

  • selector String#

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

  • options Frame.InnerHTMLOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


innerText

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

Use locator-based Locator.innerText() instead. Read more about locators.

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

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

Frame.innerText(selector);
Frame.innerText(selector, options);

Аргументы

  • selector String#

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

  • options Frame.InnerTextOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


inputValue

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

Use locator-based Locator.inputValue() instead. Read more about locators.

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

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

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

Frame.inputValue(selector);
Frame.inputValue(selector, options);

Аргументы

  • selector String#

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

  • options Frame.InputValueOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


isChecked

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

Use locator-based Locator.isChecked() instead. Read more about locators.

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

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

Frame.isChecked(selector);
Frame.isChecked(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsCheckedOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


isDisabled

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

Use locator-based Locator.isDisabled() instead. Read more about locators.

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

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

Frame.isDisabled(selector);
Frame.isDisabled(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsDisabledOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


isEditable

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

Use locator-based Locator.isEditable() instead. Read more about locators.

Возвращает, является ли элемент editable.

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

Frame.isEditable(selector);
Frame.isEditable(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsEditableOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


isHidden

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

Use locator-based Locator.isHidden() instead. Read more about locators.

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

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

Frame.isHidden(selector);
Frame.isHidden(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsHiddenOptions (опционально)

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

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

    • setTimeout double (опционально)#

      Deprecated

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

Возвращает


isVisible

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

Use locator-based Locator.isVisible() instead. Read more about locators.

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

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

Frame.isVisible(selector);
Frame.isVisible(selector, options);

Аргументы

  • selector String#

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

  • options Frame.IsVisibleOptions (опционально)

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

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

    • setTimeout double (опционально)#

      Deprecated

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

Возвращает


press

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

Use locator-based Locator.press() instead. Read more about locators.

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". При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.

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

Frame.press(selector, key);
Frame.press(selector, key, options);

Аргументы

  • selector String#

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

  • key String#

    Имя клавиши для нажатия или символ для генерации, например, ArrowLeft или a.

  • options Frame.PressOptions (опционально)

    • setDelay double (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

    • setTimeout double (опционально)#

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

Возвращает


querySelector

Добавлено в: v1.9 frame.querySelector
Discouraged

Use locator-based Frame.locator() instead. Read more about locators.

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

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

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

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

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

Frame.querySelector(selector);
Frame.querySelector(selector, options);

Аргументы

  • selector String#

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

  • options Frame.QuerySelectorOptions (опционально)

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

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

Возвращает


querySelectorAll

Добавлено в: v1.9 frame.querySelectorAll
Discouraged

Use locator-based Frame.locator() instead. Read more about locators.

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

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

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

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

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

Frame.querySelectorAll(selector);

Аргументы

  • selector String#

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

Возвращает


selectOption

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

Use locator-based Locator.selectOption() instead. Read more about locators.

Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ждет, пока все указанные опции будут присутствовать в элементе <select>, и выбирает эти опции.

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

Возвращает массив значений опций, которые были успешно выбраны.

Вызывает событие change и input, как только все предоставленные опции были выбраны.

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

// Single selection matching the value or label
frame.selectOption("select#colors", "blue");
// single selection matching both the value and the label
frame.selectOption("select#colors", new SelectOption().setLabel("Blue"));
// multiple selection
frame.selectOption("select#colors", new String[] {"red", "green", "blue"});

Аргументы

  • selector String#

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

  • values null | String | ElementHandle | String[] | SelectOption | ElementHandle[] | SelectOption[]#

    • setValue String (опционально)

      Соответствует option.value. Необязательно.

    • setLabel String (опционально)

      Соответствует option.label. Необязательно.

    • setIndex int (опционально)

      Соответствует индексу. Необязательно.

    Опции для выбора. Если <select> имеет атрибут multiple, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают.

  • options Frame.SelectOptionOptions (опционально)

    • setForce boolean (опционально) Добавлено в: v1.13#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

    • setTimeout double (опционально)#

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

Возвращает


setChecked

Добавлено в: v1.15 frame.setChecked
Discouraged

Use locator-based Locator.setChecked() instead. Read more about locators.

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

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

Когда все шаги в совокупности не завершены в течение указанного времени setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.

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

Frame.setChecked(selector, checked);
Frame.setChecked(selector, checked, options);

Аргументы

  • selector String#

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

  • checked boolean#

    Следует ли отметить или снять отметку с чекбокса.

  • options Frame.SetCheckedOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

    • setStrict boolean (опционально)#

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

    • setTimeout double (опционально)#

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

    • setTrial boolean (опционально)#

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

Возвращает


setInputFiles

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

Use locator-based Locator.setInputFiles() instead. Read more about locators.

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

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

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

Frame.setInputFiles(selector, files);
Frame.setInputFiles(selector, files, options);

Аргументы

  • selector String#

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

  • files Path | Path[] | FilePayload | FilePayload[]#

    • setName String

      Имя файла

    • setMimeType String

      Тип файла

    • setBuffer byte[]

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

  • options Frame.SetInputFilesOptions (опционально)

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

    • setTimeout double (опционально)#

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

Возвращает


tap

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

Use locator-based Locator.tap() instead. Read more about locators.

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

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

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

примечание

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

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

Frame.tap(selector);
Frame.tap(selector, options);

Аргументы

  • selector String#

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

  • options Frame.TapOptions (опционально)

    • setForce boolean (опционально)#

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

    • setModifiers List<enum KeyboardModifier { ALT, CONTROL, CONTROLORMETA, META, SHIFT }> (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


textContent

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

Use locator-based Locator.textContent() instead. Read more about locators.

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

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

Frame.textContent(selector);
Frame.textContent(selector, options);

Аргументы

  • selector String#

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

  • options Frame.TextContentOptions (опционально)

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

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

    • setTimeout double (опционально)#

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

Возвращает


type

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

In most cases, you should use Locator.fill() instead. You only need to press keys one by one if there is special keyboard handling on the page - in this case use Locator.pressSequentially().

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

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

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

Аргументы

  • selector String#

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

  • text String#

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

  • options Frame.TypeOptions (опционально)

    • setDelay double (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

    • setTimeout double (опционально)#

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

Возвращает


uncheck

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

Use locator-based Locator.uncheck() instead. Read more about locators.

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

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

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

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

Frame.uncheck(selector);
Frame.uncheck(selector, options);

Аргументы

  • selector String#

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

  • options Frame.UncheckOptions (опционально)

    • setForce boolean (опционально)#

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

    • setNoWaitAfter boolean (опционально)#

      Deprecated

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

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

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

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

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

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

    • setTimeout double (опционально)#

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

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

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

Возвращает


waitForNavigation

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

This method is inherently racy, please use Frame.waitForURL() instead.

Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null.

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

Этот метод ожидает, пока фрейм перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:

// Метод возвращается после завершения навигации
frame.waitForNavigation(() -> {
// Клик по ссылке косвенно вызовет навигацию
frame.click("a.delayed-navigation");
});
примечание

Использование History API для изменения URL считается навигацией.

Аргументы

  • options Frame.WaitForNavigationOptions (опционально)

    • setTimeout double (опционально)#

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

    • setUrl String | Pattern | Predicate<String> (опционально)#

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

    • setWaitUntil enum WaitUntilState { LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT } (опционально)#

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

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

    Обратный вызов, выполняющий действие, вызывающее событие.

Возвращает


waitForSelector

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

Use web assertions that assert visibility or a locator-based Locator.waitFor() instead. Read more about locators.

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

примечание

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

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

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

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
Browser browser = chromium.launch();
Page page = browser.newPage();
for (String currentURL : Arrays.asList("https://google.com", "https://bbc.com")) {
page.navigate(currentURL);
ElementHandle element = page.mainFrame().waitForSelector("img");
System.out.println("Loaded image: " + element.getAttribute("src"));
}
browser.close();
}
}
}

Аргументы

  • selector String#

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

  • options Frame.WaitForSelectorOptions (опционально)

    • setState enum WaitForSelectorState { ATTACHED, DETACHED, VISIBLE, HIDDEN } (опционально)#

      По умолчанию 'visible'. Может быть:

      • 'attached' - ожидание, пока элемент не будет присутствовать в DOM.
      • 'detached' - ожидание, пока элемент не будет отсутствовать в DOM.
      • 'visible' - ожидание, пока элемент не будет иметь непустую рамку и не будет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую рамку и не считается видимым.
      • 'hidden' - ожидание, пока элемент не будет либо отсоединен от DOM, либо иметь пустую рамку или visibility:hidden. Это противоположно опции 'visible'.
    • setStrict boolean (опционально) Добавлено в: v1.14#

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

    • setTimeout double (опционально)#

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

Возвращает


waitForTimeout

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

Never wait for timeout in production. Tests that wait for time are inherently flaky. Use Locator actions and web assertions that wait automatically.

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

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

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

Frame.waitForTimeout(timeout);

Аргументы

  • timeout double#

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

Возвращает