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Возвращает добавленный тег, когда срабатывает onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Добавляет тег <script>
на страницу с нужным URL или содержимым.
Использование
Frame.addScriptTag();
Frame.addScriptTag(options);
Аргументы
options
Frame.AddScriptTagOptions
(опционально)-
setContent
String (опционально)#Сырой JavaScript-контент для внедрения в фрейм.
-
Путь к JavaScript-файлу для внедрения в фрейм. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта для добавления.
-
Возвращает
addStyleTag
Добавлено до v1.9Возвращает добавленный тег, когда срабатывает onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Добавляет тег <link rel="stylesheet">
на страницу с нужным URL или тег <style type="text/css">
с содержимым.
Использование
Frame.addStyleTag();
Frame.addStyleTag(options);
Аргументы
options
Frame.AddStyleTagOptions
(опционально)
Возвращает
childFrames
Добавлено до v1.9Использование
Frame.childFrames();
Возвращает
content
Добавлено до v1.9Получает полный HTML-контент фрейма, включая doctype.
Использование
Frame.content();
Возвращает
dragAndDrop
Добавлено в: v1.13Использование
Frame.dragAndDrop(source, target);
Frame.dragAndDrop(source, target, options);
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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Возвращает возвращаемое значение 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();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
evaluateHandle
Добавлено до v1.9Возвращает возвращаемое значение 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();
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
frameElement
Добавлено до v1.9Возвращает frame
или iframe
элемент, соответствующий этому фрейму.
Это обратное действие к ElementHandle.contentFrame(). Обратите внимание, что возвращаемый элемент на самом деле принадлежит родительскому фрейму.
Этот метод выбрасывает ошибку, если фрейм был отсоединен до того, как frameElement()
вернет значение.
Использование
ElementHandle frameElement = frame.frameElement();
Frame contentFrame = frameElement.contentFrame();
System.out.println(frame == contentFrame); // -> true
Возвращает
frameLocator
Добавлено в: v1.17При работе с iframes, вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame
, например <iframe id="my-frame">
:
Locator locator = frame.frameLocator("#my-iframe").getByText("Submit");
locator.click();
Аргументы
Возвращает
getByAltText
Добавлено в: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
page.getByAltText("Playwright logo").click();
Аргументы
-
Текст для поиска элемента.
-
options
Frame.GetByAltTextOptions
(опционально)
Возвращает
getByLabel
Добавлено в: v1.27Позволяет находить элементы ввода по тексту связанного <label>
или элемента aria-labelledby
, или по атрибуту aria-label
.
Использование
Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
page.getByLabel("Username").fill("john");
page.getByLabel("Password").fill("secret");
Аргументы
-
Текст для поиска элемента.
-
options
Frame.GetByLabelOptions
(опционально)
Возвращает
getByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");
Аргументы
-
Текст для поиска элемента.
-
options
Frame.GetByPlaceholderOptions
(опционально)
Возвращает
getByRole
Добавлено в: v1.27Позволяет находить элементы по их 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
. -
Числовой атрибут, который обычно присутствует для ролей
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Находит элемент по test id.
Использование
Рассмотрим следующую структуру DOM:
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его test id:
page.getByTestId("directions").click();
Аргументы
Возвращает
Детали
По умолчанию в качестве test id используется атрибут data-testid
. При необходимости можно задать другой атрибут, используя метод Selectors.setTestIdAttribute().
getByText
Добавлено в: v1.27Позволяет находить элементы, содержащие указанный текст.
См. также Locator.filter(), который позволяет сначала отфильтровать по другим критериям (например, доступной роли), а затем — по текстовому содержимому.
Использование
Рассмотрим следующую структуру DOM:
<div>Hello <span>world</span></div>
<div>Hello</div>
Вы можете находить элементы по подстроке, точному соответствию или регулярному выражению:
// Совпадает с <span>
page.getByText("world");
// Совпадает с первым <div>
page.getByText("Hello world");
// Совпадает со вторым <div>
page.getByText("Hello", new Page.GetByTextOptions().setExact(true));
// Совпадает с обоими <div>
page.getByText(Pattern.compile("Hello"));
// Совпадает со вторым <div>
page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE));
Аргументы
-
Текст, по которому будет найден элемент.
-
options
Frame.GetByTextOptions
(необязательно)
Возвращает
Детали
Поиск по тексту всегда нормализует пробелы, даже при точном совпадении. Например, несколько пробелов заменяются на один, переносы строк преобразуются в пробелы, а начальные и конечные пробелы игнорируются.
Элементы ввода с типами button
и submit
сопоставляются по их атрибуту value
, а не по текстовому содержимому. Например, поиск по тексту "Log in"
найдёт <input type=button value="Log in">
.
getByTitle
Добавлено в: v1.27Позволяет находить элементы по атрибуту title
.
Использование
Рассмотрим следующую структуру DOM:
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, предварительно найдя элемент по значению атрибута title
:
assertThat(page.getByTitle("Issues count")).hasText("25 issues");
Аргументы
-
Текст, по которому будет найден элемент.
-
options
Frame.GetByTitleOptions
(необязательно)
Возвращает
isDetached
Добавлено до v1.9Возвращает true
, если фрейм был отсоединён, иначе — false
.
Использование
Frame.isDetached();
Возвращает
isEnabled
Добавлено до v1.9Возвращает, является ли элемент доступным для взаимодействия (enabled).
Использование
Frame.isEnabled(selector);
Frame.isEnabled(selector, options);
Аргументы
-
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
options
Frame.IsEnabledOptions
(необязательно)-
setStrict
boolean (необязательно) Добавлено в: v1.14#Если
true
, селектор должен однозначно указывать на один элемент. Если найдено несколько, будет выброшено исключение. -
setTimeout
double (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию
30000
(30 секунд). Установите0
, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
locator
Добавлено в: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице или фрейме. Локатор разрешается к элементу непосредственно перед выполнением действия, так что последовательность действий над одним и тем же локатором может фактически выполняться над разными DOM-элементами — если структура DOM изменилась между действиями.
Использование
Frame.locator(selector);
Frame.locator(selector, options);
Аргументы
-
Селектор, который используется для поиска 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Возвращает значение атрибута name
фрейма, указанное в теге.
Если name
не задан, возвращает значение атрибута id
.
Это значение вычисляется один раз при создании фрейма и не обновляется, если атрибут был изменён позже.
Использование
Frame.name();
Возвращает
navigate
Добавлено до v1.9Возвращает ответ главного ресурса. В случае нескольких перенаправлений метод вернёт ответ последнего редиректа.
Метод выбрасывает ошибку, если:
- возникает ошибка 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, по которому следует перейти. Должен содержать схему, например
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();
Возвращает
parentFrame
Добавлено до v1.9Родительский фрейм, если он есть. Для отсоединённых и главных фреймов возвращается null
.
Использование
Frame.parentFrame();
Возвращает
setContent
Добавлено до v1.9Этот метод внутренне вызывает document.write(), унаследовав все его особенности и поведение.
Использование
Frame.setContent(html);
Frame.setContent(html, options);
Аргументы
-
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();
Возвращает
url
Добавлено до v1.9Возвращает URL фрейма.
Использование
Frame.url();
Возвращает
waitForFunction
Добавлено до v1.9Возвращает управление, когда выражение возвращает 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);
Аргументы
-
JavaScript-выражение, которое будет выполнено в контексте браузера. Если выражение возвращает функцию, она будет автоматически вызвана.
-
arg
EvaluationArgument (необязательно)#Необязательный аргумент, передаваемый в выражение.
-
options
Frame.WaitForFunctionOptions
(необязательно)-
setPollingInterval
double (необязательно)#Если указано, задаёт интервал в миллисекундах, с которым будет выполняться функция. По умолчанию, если опция не указана, выражение вызывается внутри
requestAnimationFrame
. -
setTimeout
double (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию —
30000
(30 секунд). Установите0
, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
waitForLoadState
Добавлено до v1.9Ожидает достижения нужного состояния загрузки.
Метод возвращает управление, когда фрейм достигает указанного состояния загрузки (по умолчанию — 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
(необязательно)-
setTimeout
double (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию — 30 секунд. Установите
0
, чтобы отключить таймаут. Значение по умолчанию можно изменить с помощью методов BrowserContext.setDefaultNavigationTimeout(), BrowserContext.setDefaultTimeout(), Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().
-
Возвращает
waitForURL
Добавлено в: v1.11Ожидает, пока фрейм перейдёт по заданному 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Используйте основанный на локаторах Locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse(), чтобы кликнуть в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
Frame.check(selector);
Frame.check(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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Используйте основанный на локаторах Locator.click() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse(), чтобы кликнуть в центр элемента или в указанную setPosition.
- Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция setNoWaitAfter.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
Frame.click(selector);
Frame.click(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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Используйте основанный на локаторах Locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse(), чтобы выполнить двойной клик в центр элемента или в указанную setPosition. Если первый клик
dblclick()
вызывает событие навигации, этот метод выбрасывает исключение.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
frame.dblclick()
генерирует два события click
и одно событие dblclick
.
Использование
Frame.dblclick(selector);
Frame.dblclick(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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Используйте основанный на локаторах Locator.dispatchEvent() вместо этого. Подробнее о локаторах.
Пример ниже генерирует событие click
на элементе. Независимо от состояния видимости элемента, click
генерируется. Это эквивалентно вызову element.click().
Использование
frame.dispatchEvent("button#submit", "click");
Внутри он создает экземпляр события на основе указанного type, инициализирует его свойствами eventInit и генерирует его на элементе. События по умолчанию composed
, cancelable
и всплывают.
Поскольку eventInit специфичен для события, пожалуйста, обратитесь к документации по событиям для списков начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать 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);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Тип 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Этот метод не ждет, пока элемент пройдет проверки на возможность действия, и поэтому может привести к нестабильным тестам. Используйте 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");
Аргументы
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Опциональный аргумент для передачи в expression.
-
options
Frame.EvalOnSelectorOptions
(опционально)
Возвращает
evalOnSelectorAll
Добавлено в: v1.9В большинстве случаев Locator.evaluateAll(), другие вспомогательные методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.
Возвращает возвращаемое значение expression.
Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента в expression.
Если expression возвращает Promise, то Frame.evalOnSelectorAll() будет ждать разрешения промиса и возвращать его значение.
Использование
boolean divsCounts = (boolean) page.evalOnSelectorAll("div", "(divs, min) => divs.length >= min", 10);
Аргументы
-
Селектор для запроса.
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Опциональный аргумент для передачи в expression.
Возвращает
fill
Добавлено до v1.9Используйте основанный на локаторах Locator.fill() вместо этого. Подробнее о локаторах.
Этот метод ждет элемент, соответствующий selector, ждет проверки actionability, фокусирует элемент, заполняет его и генерирует событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является элементом <input>
, <textarea>
или [contenteditable]
, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, будет заполнен именно этот элемент управления.
Для отправки детализированных событий клавиатуры используйте Locator.pressSequentially().
Использование
Frame.fill(selector, value);
Frame.fill(selector, value, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<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Используйте основанный на локаторах Locator.focus() вместо этого. Подробнее о локаторах.
Этот метод получает элемент с selector и фокусирует его. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.
Использование
Frame.focus(selector);
Frame.focus(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.FocusOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить таймаут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлено до v1.9Используйте основанный на локаторах Locator.getAttribute() вместо этого. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
Frame.getAttribute(selector, name);
Frame.getAttribute(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, для которого нужно получить значение.
-
options
Frame.GetAttributeOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить таймаут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
hover
Добавлено до v1.9Используйте основанный на локаторах Locator.hover() вместо этого. Подробнее о локаторах.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse(), чтобы навести курсор на центр элемента или на указанную setPosition.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
Frame.hover(selector);
Frame.hover(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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.9Use locator-based Locator.innerHTML() instead. Read more about locators.
Возвращает element.innerHTML
.
Использование
Frame.innerHTML(selector);
Frame.innerHTML(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.InnerHTMLOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
innerText
Добавлено до v1.9Use locator-based Locator.innerText() instead. Read more about locators.
Возвращает element.innerText
.
Использование
Frame.innerText(selector);
Frame.innerText(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.InnerTextOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
inputValue
Добавлено в: v1.13Use locator-based Locator.inputValue() instead. Read more about locators.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для не-input элементов. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный control, возвращает значение этого контрола.
Использование
Frame.inputValue(selector);
Frame.inputValue(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.InputValueOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлено до v1.9Use locator-based Locator.isChecked() instead. Read more about locators.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является чекбоксом или радио-кнопкой.
Использование
Frame.isChecked(selector);
Frame.isChecked(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.IsCheckedOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлено до v1.9Use locator-based Locator.isDisabled() instead. Read more about locators.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
Frame.isDisabled(selector);
Frame.isDisabled(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.IsDisabledOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлено до v1.9Use locator-based Locator.isEditable() instead. Read more about locators.
Возвращает, является ли элемент editable.
Использование
Frame.isEditable(selector);
Frame.isEditable(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.IsEditableOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до v1.9Use locator-based Locator.isHidden() instead. Read more about locators.
Возвращает, скрыт ли элемент, противоположность visible. selector, который не соответствует ни одному элементу, считается скрытым.
Использование
Frame.isHidden(selector);
Frame.isHidden(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.IsHiddenOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#DeprecatedЭтот параметр игнорируется. Frame.isHidden() не ждет, пока элемент станет скрытым, и возвращает результат немедленно.
-
Возвращает
isVisible
Добавлено до v1.9Use locator-based Locator.isVisible() instead. Read more about locators.
Возвращает, является ли элемент visible. selector, который не соответствует ни одному элементу, считается невидимым.
Использование
Frame.isVisible(selector);
Frame.isVisible(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.IsVisibleOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#DeprecatedЭтот параметр игнорируется. Frame.isVisible() не ждет, пока элемент станет видимым, и возвращает результат немедленно.
-
Возвращает
press
Добавлено до v1.9Use 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);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
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.9Use locator-based Frame.locator() instead. Read more about locators.
Возвращает ElementHandle, указывающий на элемент фрейма.
Использование ElementHandle не рекомендуется, используйте объекты Locator и утверждения с приоритетом веба.
Метод находит элемент, соответствующий указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает null
.
Использование
Frame.querySelector(selector);
Frame.querySelector(selector, options);
Аргументы
-
Селектор для запроса.
-
options
Frame.QuerySelectorOptions
(опционально)
Возвращает
querySelectorAll
Добавлено в: v1.9Use locator-based Frame.locator() instead. Read more about locators.
Возвращает ElementHandles, указывающие на элементы фрейма.
Использование ElementHandle не рекомендуется, используйте объекты Locator.
Метод находит все элементы, соответствующие указанному селектору в фрейме. Если ни один элемент не соответствует селектору, возвращает пустой массив.
Использование
Frame.querySelectorAll(selector);
Аргументы
Возвращает
selectOption
Добавлено до v1.9Use 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"});
Аргументы
-
Селектор для запроса.
-
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.15Use locator-based Locator.setChecked() instead. Read more about locators.
Этот метод отмечает или снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является чекбоксом или радио-кнопкой. Если нет, этот метод выбрасывает исключение.
- Если элемент уже имеет правильное состояние отметки, этот метод возвращает результат немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse() для нажатия в центре элемента.
- Убедитесь, что элемент теперь отмечен или снята отметка. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного времени setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
Frame.setChecked(selector, checked);
Frame.setChecked(selector, checked, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Следует ли отметить или снять отметку с чекбокса.
-
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.9Use locator-based Locator.setInputFiles() instead. Read more about locators.
Устанавливает значение элемента ввода файла в указанные пути к файлам или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущего рабочего каталога. Для пустого массива очищает выбранные файлы.
Этот метод ожидает, что selector указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контрол, он нацеливается на контрол.
Использование
Frame.setInputFiles(selector, files);
Frame.setInputFiles(selector, files, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.SetInputFilesOptions
(опционально)-
setNoWaitAfter
boolean (опционально)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout().
-
Возвращает
tap
Добавлено до v1.9Use locator-based Locator.tap() instead. Read more about locators.
Этот метод выполняет нажатие на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на соответствующем элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.touchscreen() для нажатия в центр элемента или указанную setPosition.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
frame.tap()
требует, чтобы параметр hasTouch
контекста браузера был установлен в true.
Использование
Frame.tap(selector);
Frame.tap(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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.9Use locator-based Locator.textContent() instead. Read more about locators.
Возвращает element.textContent
.
Использование
Frame.textContent(selector);
Frame.textContent(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Frame.TextContentOptions
(опционально)-
setStrict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
setTimeout
double (опционально)#Максимальное время в миллисекундах. По умолчанию
30000
(30 секунд). Передайте0
, чтобы отключить тайм-аут. Значение по умолчанию можно изменить, используя методы BrowserContext.setDefaultTimeout() или Page.setDefaultTimeout() methods.
-
Возвращает
type
Добавлено до v1.9In 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().
Использование
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
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.9Use locator-based Locator.uncheck() instead. Read more about locators.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что соответствующий элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят с отметки, этот метод возвращается немедленно.
- Подождите, пока не будут выполнены проверки actionability на соответствующем элементе, если не установлен параметр setForce. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте Page.mouse() для нажатия в центр элемента.
- Убедитесь, что элемент теперь снят с отметки. Если нет, этот метод выбрасывает исключение.
Если все шаги в совокупности не завершились в течение указанного setTimeout, этот метод выбрасывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
Frame.uncheck(selector);
Frame.uncheck(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
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.9This 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.9Use 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();
}
}
}
Аргументы
-
Селектор для запроса.
-
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.9Never 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);
Аргументы
Возвращает