Frame
В любой момент времени страница предоставляет текущее дерево фреймов через методы page.mainFrame() и frame.childFrames().
Жизненный цикл объекта Frame контролируется тремя событиями, которые отправляются на объекте страницы:
- page.on('frameattached') - срабатывает, когда фрейм присоединяется к странице. Фрейм может быть присоединен к странице только один раз.
- page.on('framenavigated') - срабатывает, когда фрейм совершает навигацию на другой URL.
- page.on('framedetached') - срабатывает, когда фрейм отсоединяется от страницы. Фрейм может быть отсоединен от страницы только один раз.
Пример вывода дерева фреймов:
const { firefox } = require('playwright'); // Или 'chromium' или 'webkit'.
(async () => {
const browser = await firefox.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/chrome/browser/canary.html');
dumpFrameTree(page.mainFrame(), '');
await browser.close();
function dumpFrameTree(frame, indent) {
console.log(indent + frame.url());
for (const child of frame.childFrames())
dumpFrameTree(child, indent + ' ');
}
})();
Методы
addScriptTag
Добавлено до v1.9Возвращает добавленный тег, когда срабатывает событие onload скрипта или когда содержимое скрипта было внедрено в фрейм.
Добавляет тег <script>
на страницу с указанным URL или содержимым.
Использование
await frame.addScriptTag();
await frame.addScriptTag(options);
Аргументы
options
Object (опционально)-
Сырой JavaScript-контент для внедрения в фрейм.
-
Путь к JavaScript-файлу для внедрения в фрейм. Если
path
является относительным путем, то он разрешается относительно текущей рабочей директории. -
Тип скрипта. Используйте 'module', чтобы загрузить JavaScript ES6 модуль. Подробнее см. script.
-
URL скрипта для добавления.
-
Возвращает
addStyleTag
Добавлено до v1.9Возвращает добавленный тег, когда срабатывает событие onload таблицы стилей или когда CSS-контент был внедрен в фрейм.
Добавляет тег <link rel="stylesheet">
на страницу с указанным URL или тег <style type="text/css">
с содержимым.
Использование
await frame.addStyleTag();
await frame.addStyleTag(options);
Аргументы
options
Object (опционально)
Возвращает
childFrames
Добавлено до v1.9Использование
frame.childFrames();
Возвращает
content
Добавлено до v1.9Получает полный HTML-контент фрейма, включая doctype.
Использование
await frame.content();
Возвращает
dragAndDrop
Добавлено в: v1.13Использование
await frame.dragAndDrop(source, target);
await frame.dragAndDrop(source, target, options);
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если селектор удовлетворяет несколько элементов, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если селектор удовлетворяет несколько элементов, будет использован первый.
-
options
Object (опционально)-
Нужно ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (опционально)#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
sourcePosition
Object (опционально) Добавлено в: v1.14#Кликает на элементе-источнике в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
targetPosition
Object (опционально) Добавлено в: v1.14#Сбрасывает на элементе-цели в этой точке относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью параметраactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения.
-
Возвращает
evaluate
Добавлено до v1.9Возвращает значение, возвращаемое pageFunction.
Если функция, переданная в frame.evaluate(), возвращает Promise, то frame.evaluate() будет ожидать разрешения промиса и вернет его значение.
Если функция, переданная в frame.evaluate(), возвращает не-Serializable значение, то frame.evaluate() возвращает undefined
. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON
: -0
, NaN
, Infinity
, -Infinity
.
Использование
const result = await frame.evaluate(([x, y]) => {
return Promise.resolve(x * y);
}, [7, 8]);
console.log(result); // выводит "56"
Вместо функции также можно передать строку.
console.log(await frame.evaluate('1 + 2')); // выводит "3"
Экземпляры ElementHandle могут быть переданы в качестве аргумента в frame.evaluate():
const bodyHandle = await frame.evaluate('document.body');
const html = await frame.evaluate(([body, suffix]) =>
body.innerHTML + suffix, [bodyHandle, 'hello'],
);
await bodyHandle.dispose();
Аргументы
-
pageFunction
function | string#Функция, которая будет выполнена в контексте страницы.
-
arg
EvaluationArgument (опционально)#Опциональный аргумент для передачи в pageFunction.
Возвращает
evaluateHandle
Добавлено до версии v1.9Возвращает значение, возвращаемое pageFunction в виде JSHandle.
Единственное отличие между frame.evaluate() и frame.evaluateHandle() заключается в том, что frame.evaluateHandle() возвращает JSHandle.
Если функция, переданная в frame.evaluateHandle(), возвращает Promise, то frame.evaluateHandle() будет ожидать разрешения промиса и вернет его значение.
Использование
// Обработчик для объекта window
const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));
Вместо функции также можно передать строку.
const aHandle = await frame.evaluateHandle('document'); // Обработчик для 'document'.
Экземпляры JSHandle могут быть переданы в качестве аргумента в frame.evaluateHandle():
const aHandle = await frame.evaluateHandle(() => document.body);
const resultHandle = await frame.evaluateHandle(([body, suffix]) =>
body.innerHTML + suffix, [aHandle, 'hello'],
);
console.log(await resultHandle.jsonValue());
await resultHandle.dispose();
Аргументы
-
pageFunction
function | string#Функция, которая будет выполнена в контексте страницы.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
Возвращает
frameElement
Добавлено до версии v1.9Возвращает обработчик элемента frame
или iframe
, который соответствует этому фрейму.
Это обратная операция для elementHandle.contentFrame(). Обратите внимание, что возвращаемый обработчик фактически принадлежит родительскому фрейму.
Этот метод вызывает ошибку, если фрейм был отсоединен до того, как frameElement()
вернет значение.
Использование
const frameElement = await frame.frameElement();
const contentFrame = await frameElement.contentFrame();
console.log(frame === contentFrame); // -> true
Возвращает
frameLocator
Добавлено в версии: v1.17При работе с iframes вы можете создать локатор фрейма, который войдет в iframe и позволит выбирать элементы в этом iframe.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame
, например, <iframe id="my-frame">
:
const locator = frame.frameLocator('#my-iframe').getByText('Submit');
await locator.click();
Аргументы
Возвращает
getByAltText
Добавлено в версии: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click();
Аргументы
-
Текст для поиска элемента.
-
options
Object (опционально)
Возвращает
getByLabel
Добавлено в: v1.27Позволяет находить элементы ввода по тексту связанного элемента <label>
или aria-labelledby
, или по атрибуту aria-label
.
Использование
Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:
<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
await page.getByLabel('Username').fill('john');
await page.getByLabel('Password').fill('secret');
Аргументы
-
Текст для поиска элемента.
-
options
Object (опционально)
Возвращает
getByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com');
Аргументы
-
Текст для поиска элемента.
-
options
Object (опционально)
Возвращает
getByRole
Добавлено в: v1.27Позволяет находить элементы по их ARIA роли, ARIA атрибутам и доступному имени.
Использование
Рассмотрим следующую структуру DOM.
<h3>Sign up</h3>
<label>
<input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>
Вы можете найти каждый элемент по его неявной роли:
await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
await page.getByRole('checkbox', { name: 'Subscribe' }).check();
await page.getByRole('button', { name: /submit/i }).click();
Аргументы
-
role
"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
Object (опционально)-
checked
boolean (опционально)#Атрибут, который обычно устанавливается
aria-checked
или нативными элементами<input type=checkbox>
.Узнайте больше о
aria-checked
. -
disabled
boolean (опционально)#Атрибут, который обычно устанавливается
aria-disabled
илиdisabled
.примечаниеВ отличие от большинства других атрибутов,
disabled
наследуется через иерархию DOM. Узнайте больше оaria-disabled
. -
exact
boolean (опционально) Добавлено в: v1.28#Совпадает ли name точно: с учетом регистра и целой строки. По умолчанию false. Игнорируется, когда name является регулярным выражением. Обратите внимание, что точное совпадение все равно обрезает пробелы.
-
expanded
boolean (опционально)#Атрибут, который обычно устанавливается
aria-expanded
.Узнайте больше о
aria-expanded
. -
includeHidden
boolean (опционально)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden
. -
Числовой атрибут, который обычно присутствует для ролей
heading
,listitem
,row
,treeitem
, с значениями по умолчанию для элементов<h1>-<h6>
.Узнайте больше о
aria-level
. -
name
string | RegExp (опционально)#Опция для сопоставления доступного имени. По умолчанию, сопоставление не учитывает регистр и ищет подстроку, используйте exact для управления этим поведением.
Узнайте больше о доступном имени.
-
pressed
boolean (опционально)#Атрибут, который обычно устанавливается
aria-pressed
.Узнайте больше о
aria-pressed
. -
selected
boolean (опционально)#Атрибут, который обычно устанавливается
aria-selected
.Узнайте больше о
aria-selected
.
-
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о руководствах ARIA.
Многие HTML-элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Руководства ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role
и/или aria-*
атрибуты на значения по умолчанию.
getByTestId
Added in: v1.27Позволяет находить элемент по тестовому идентификатору.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Вы можете найти элемент по его тестовому идентификатору:
await page.getByTestId('directions').click();
Аргументы
Возвращает
Детали
По умолчанию атрибут data-testid
используется в качестве тестового идентификатора. Используйте selectors.setTestIdAttribute(), чтобы настроить другой атрибут тестового идентификатора, если это необходимо.
// Установите пользовательский атрибут тестового идентификатора из конфигурации @playwright/test:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
testIdAttribute: 'data-pw'
},
});
getByText
Added in: 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', { exact: true });
// Соответствует обоим <div>
page.getByText(/Hello/);
// Соответствует второму <div>
page.getByText(/^hello$/i);
Аргументы
-
Текст для поиска элемента.
-
options
Object (optional)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button
и submit
сопоставляются по их value
, а не по содержимому текста. Например, поиск по тексту "Log in"
соответствует <input type=button value="Log in">
.
getByTitle
Added in: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
Аргументы
-
Текст для поиска элемента.
-
options
Object (optional)
Возвращает
goto
Added before v1.9Возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация завершится с ответом последнего перенаправления.
Метод вызовет ошибку, если:
- произошла ошибка SSL (например, в случае самоподписанных сертификатов).
- целевой URL недействителен.
- превышено время ожидания во время навигации.
- удаленный сервер не отвечает или недоступен.
- основной ресурс не удалось загрузить.
Метод не вызовет ошибку, если удаленный сервер вернет любой действительный код состояния HTTP, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав response.status().
Метод либо вызывает ошибку, либо возвращает ответ основного ресурса. Единственные исключения - это навигация на about:blank
или навигация на тот же URL с другим хэшем, которые будут успешными и вернут null
.
Режим без головы не поддерживает навигацию к PDF-документу. См. проблему в исходном коде.
Использование
await frame.goto(url);
await frame.goto(url, options);
Аргументы
-
URL для навигации фрейма. URL должен включать схему, например,
https://
. -
options
Object (опционально)-
Значение заголовка Referer. Если указано, оно будет иметь приоритет над значением заголовка referer, установленным с помощью page.setExtraHTTPHeaders().
-
Максимальное время операции в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeout
в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil
"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
isDetached
Added before v1.9Возвращает true
, если фрейм был отсоединен, или false
в противном случае.
Использование
frame.isDetached();
Возвращает
isEnabled
Added before v1.9Возвращает, является ли элемент включенным.
Использование
await frame.isEnabled(selector);
await frame.isEnabled(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (опционально)-
strict
boolean (опционально) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
locator
Added in: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице / фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
frame.locator(selector);
frame.locator(selector, options);
Аргументы
-
Селектор для использования при разрешении DOM элемента.
-
options
Object (опционально)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article
, который имеетtext=Playwright
, соответствует<article><div>Playwright</div></article>
.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти
content
, который имеетdiv
в<article><content><div>Playwright</div></content></article>
. Однако поискcontent
, который имеетarticle div
, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent
.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNot
Locator (опционально) Added in: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article
, который не имеетdiv
, соответствует<article><span>Playwright</span></article>
.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNotText
string | RegExp (опционально) Added in: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string сопоставление нечувствительно к регистру и ищет подстроку.
-
hasText
string | RegExp (опционально)#Соответствует элементам, содержащим указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string сопоставление нечувствительно к регистру и ищет подстроку. Например,
"Playwright"
соответствует<article><div>Playwright</div></article>
.
-
Возвращает
name
Добавлено до версии v1.9Возвращает атрибут name фрейма, как указано в теге.
Если имя пустое, возвращает атрибут id.
Это значение вычисляется один раз при создании фрейма и не обновляется, если атрибут изменяется позже.
Использование
frame.name();
Возвращает
page
Добавлено до версии v1.9Возвращает страницу, содержащую этот фрейм.
Использование
frame.page();
Возвращает
parentFrame
Добавлено до версии v1.9Родительский фрейм, если он есть. Открепленные фреймы и главные фреймы возвращают null
.
Использование
frame.parentFrame();
Возвращает
setContent
Добавлено до версии v1.9Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.
Использование
await frame.setContent(html);
await frame.setContent(html, options);
Аргументы
-
HTML разметка для назначения странице.
-
options
Object (опционально)-
Максимальное время операции в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюnavigationTimeout
в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil
"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
title
Добавлено до версии v1.9Возвращает заголовок страницы.
Использование
await frame.title();
Возвращает
url
Добавлено до версии v1.9Возвращает URL фрейма.
Использование
frame.url();
Возвращает
waitForFunction
Added before v1.9Возвращает, когда pageFunction возвращает истинное значение, возвращает это значение.
Использование
frame.waitForFunction() может быть использован для наблюдения за изменением размера области просмотра:
const { firefox } = require('playwright'); // Или 'chromium' или 'webkit'.
(async () => {
const browser = await firefox.launch();
const page = await browser.newPage();
const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
await page.setViewportSize({ width: 50, height: 50 });
await watchDog;
await browser.close();
})();
Чтобы передать аргумент в предикат функции frame.waitForFunction
:
const selector = '.foo';
await frame.waitForFunction(selector => !!document.querySelector(selector), selector);
Аргументы
-
pageFunction
function | string#Функция, которая будет выполнена в контексте страницы.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
-
options
Object (опционально)-
polling
number | "raf" (опционально)#Если polling равно
'raf'
, то pageFunction постоянно выполняется вrequestAnimationFrame
callback. Если polling является числом, то оно рассматривается как интервал в миллисекундах, с которым функция будет выполняться. По умолчаниюraf
. -
Максимальное время ожидания в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForLoadState
Added before v1.9Ожидает достижения требуемого состояния загрузки.
Этот метод возвращает, когда фрейм достигает требуемого состояния загрузки, по умолчанию load
. Навигация должна быть завершена, когда вызывается этот метод. Если текущий документ уже достиг требуемого состояния, метод разрешается немедленно.
В большинстве случаев этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.
Использование
await frame.click('button'); // Клик вызывает навигацию.
await frame.waitForLoadState(); // По умолчанию ожидает состояния 'load'.
Аргументы
-
state
"load" | "domcontentloaded" | "networkidle" (опционально)#Необязательное состояние загрузки для ожидания, по умолчанию
load
. Если состояние уже было достигнуто при загрузке текущего документа, метод разрешается немедленно. Может быть одним из:'load'
- ожидать, пока не будет вызвано событиеload
.'domcontentloaded'
- ожидать, пока не будет вызвано событиеDOMContentLoaded
.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ ожидать, пока не будет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.
-
options
Object (опционально)-
Максимальное время операции в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeout
в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForURL
Added in: v1.11Ожидает, пока фрейм перейдет на указанный URL.
Использование
await frame.click('a.delayed-navigation'); // Клик по ссылке косвенно вызывает навигацию
await frame.waitForURL('**/target.html');
Аргументы
-
url
string | RegExp | function(URL):boolean#Глобальный шаблон, регулярное выражение или предикат, получающий URL для сопоставления при ожидании навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации на URL, который точно равен строке.
-
options
Object (опционально)-
Максимальное время операции в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeout
в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil
"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда будет вызвано событиеDOMContentLoaded
.'load'
- считать операцию завершенной, когда будет вызвано событиеload
.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
Устарело
$
Добавлено в: v1.9Используйте основанный на локаторах frame.locator() вместо этого. Подробнее о локаторах.
Возвращает ElementHandle, указывающий на элемент фрейма.
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator и утверждения, ориентированные на веб.
Метод находит элемент, соответствующий указанному селектору внутри фрейма. Если ни один элемент не соответствует селектору, возвращает null
.
Использование
await frame.$(selector);
await frame.$(selector, options);
Аргументы
-
Селектор для поиска.
-
options
Object (опционально)
Возвращает
$$
Добавлено в: v1.9Используйте основанный на локаторах frame.locator() вместо этого. Подробнее о локаторах.
Возвращает ElementHandles, указывающие на элементы фрейма.
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator.
Метод находит все элементы, соответствующие указанному селектору внутри фрейма. Если ни один элемент не соответствует селектору, возвращает пустой массив.
Использование
await frame.$$(selector);
Аргументы
Возвращает
$eval
Добавлено в: v1.9Этот метод не ожидает, пока элемент пройдет проверки на возможность действия, и поэтому может привести к нестабильным тестам. Используйте locator.evaluate(), другие вспомогательные методы Locator или утверждения, ориентированные на веб, вместо этого.
Возвращает возвращаемое значение pageFunction.
Метод находит элемент, соответствующий указанному селектору внутри фрейма, и передает его в качестве первого аргумента в pageFunction. Если ни один элемент не соответствует селектору, метод выбрасывает ошибку.
Если pageFunction возвращает Promise, то frame.$eval() будет ожидать разрешения промиса и вернет его значение.
Использование
const searchValue = await frame.$eval('#search', el => el.value);
const preloadHref = await frame.$eval('link[rel=preload]', el => el.href);
const html = await frame.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
Аргументы
-
Селектор для поиска.
-
pageFunction
function(Element) | string#Функция для выполнения в контексте страницы.
-
arg
EvaluationArgument (опционально)#Опциональный аргумент для передачи в pageFunction.
-
options
Object (опционально)
Возвращает
$$eval
Добавлено в: v1.9В большинстве случаев locator.evaluateAll(), другие методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.
Возвращает значение, возвращаемое pageFunction.
Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента в pageFunction.
Если pageFunction возвращает Promise, то frame.$$eval() будет ожидать разрешения промиса и вернет его значение.
Использование
const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
Аргументы
-
Селектор для поиска.
-
pageFunction
function(Array<Element>) | string#Функция, которая будет выполнена в контексте страницы.
-
arg
EvaluationArgument (опционально)#Опциональный аргумент для передачи в pageFunction.
Возвращает
check
Добавлено до v1.9Используйте основанный на локаторах locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает управление немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы кликнуть в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если все шаги не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.check(selector);
await frame.check(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (опционально)-
Следует ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
position
Object (опционально) Добавлено в: v1.11#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trial
boolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
click
Добавлено до v1.9Используйте основанный на локаторах locator.click() вместо этого. Подробнее о локаторах.
Этот метод кликает по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы кликнуть в центр элемента или в указанную position.
- Подождите, пока инициированные навигации не завершатся успешно или не завершатся с ошибкой, если только не установлена опция noWaitAfter.
Если все шаги не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.click(selector);
await frame.click(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (опционально)-
button
"left" | "right" | "middle" (опционально)#По умолчанию
left
. -
clickCount
number (опционально)#По умолчанию 1. См. UIEvent.detail.
-
Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Следует ли обходить проверки actionability. По умолчанию
false
. -
modifiers
Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Обеспечивает, что только эти модификаторы нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
boolean (опционально)#УстарелоЭта опция по умолчанию будет
true
в будущем.Действия, которые инициируют навигацию, ожидают её завершения и начала загрузки страниц. Можно отключить это ожидание, установив данный флаг. Эта опция требуется только в исключительных случаях, например, при переходе на недоступные страницы. По умолчанию
false
. -
position
Object (необязательно)#Точка внутри элемента, относительно верхнего левого угла области отступов (padding box). Если не указана, выбирается видимая точка элемента.
-
strict
boolean (необязательно) Добавлено в: v1.14#Если
true
, селектор должен соответствовать только одному элементу, иначе вызывается исключение. -
timeout
number (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию
0
(без таймаута). Значение можно изменить через параметрactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trial
boolean (необязательно) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки доступности и пропускает само действие. По умолчанию
false
. Полезно для ожидания готовности элемента без выполнения клика. Однако модификаторы клавиш всё равно будут нажаты, чтобы тестировать элементы, которые становятся видимыми только при их нажатии.
-
Возвращает
dblclick
Added before v1.9Use locator-based locator.dblclick() instead. Read more about locators.
Этот метод выполняет двойной клик по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на соответствующем элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для двойного клика в центре элемента или в указанной position. если первый клик
dblclick()
вызывает событие навигации, этот метод вызовет ошибку.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод вызовет TimeoutError. Передача нулевого тайм-аута отключает это.
frame.dblclick()
отправляет два события click
и одно событие dblclick
.
Использование
await frame.dblclick(selector);
await frame.dblclick(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
button
"left" | "right" | "middle" (optional)#По умолчанию
left
. -
Время ожидания между
mousedown
иmouseup
в миллисекундах. По умолчанию 0. -
Пропускать ли проверки actionability. По умолчанию
false
. -
modifiers
Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (optional)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.
-
noWaitAfter
boolean (optional)#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
dispatchEvent
Added before v1.9Use locator-based locator.dispatchEvent() instead. Read more about locators.
Пример ниже отправляет событие click
на элемент. Независимо от состояния видимости элемента, click
отправляется. Это эквивалентно вызову element.click().
Использование
await frame.dispatchEvent('button#submit', 'click');
Under the hood, it creates an instance of an event based on the given type, initializes it with eventInit properties and dispatches it on the element. Events are composed
, cancelable
and bubble by default.
Since eventInit is event-specific, please refer to the events documentation for the lists of initial properties:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
You can also specify JSHandle
as the property value if you want live objects to be passed into the event:
// Note you can only create DataTransfer in Chromium and Firefox
const dataTransfer = await frame.evaluateHandle(() => new DataTransfer());
await frame.dispatchEvent('#source', 'dragstart', { dataTransfer });
Аргументы
-
A selector to search for an element. If there are multiple elements satisfying the selector, the first will be used.
-
DOM event type:
"click"
,"dragstart"
, etc. -
eventInit
EvaluationArgument (optional)#Optional event-specific initialization properties.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#When true, the call requires selector to resolve to a single element. If given selector resolves to more than one element, the call throws an exception.
-
Maximum time in milliseconds. Defaults to
0
- no timeout. The default value can be changed viaactionTimeout
option in the config, or by using the browserContext.setDefaultTimeout() or page.setDefaultTimeout() methods.
-
Возвращает
fill
Добавлено до v1.9Используйте основанный на локаторах locator.fill() вместо этого. Подробнее о локаторах.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, фокусируется на элементе, заполняет его и вызывает событие input
после заполнения. Обратите внимание, что вы можете передать пустую строку, чтобы очистить поле ввода.
Если целевой элемент не является элементом <input>
, <textarea>
или [contenteditable]
, этот метод вызывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, будет заполнен именно этот элемент управления.
Чтобы отправить более детализированные события клавиатуры, используйте locator.pressSequentially().
Использование
await frame.fill(selector, value);
await frame.fill(selector, value, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Значение для заполнения элемента
<input>
,<textarea>
или[contenteditable]
. -
options
Object (optional)-
force
boolean (optional) Добавлено в: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (optional)#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
strict
boolean (optional) Добавлено в: v1.14#Когда true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
focus
Добавлено до v1.9Используйте основанный на локаторах locator.focus() вместо этого. Подробнее о локаторах.
Этот метод извлекает элемент с selector и фокусируется на нем. Если нет элемента, соответствующего selector, метод ждет, пока соответствующий элемент не появится в DOM.
Использование
await frame.focus(selector);
await frame.focus(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Добавлено в: v1.14#Когда true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
getAttribute
Added before v1.9Use locator-based locator.getAttribute() instead. Read more about locators.
Возвращает значение атрибута элемента.
Использование
await frame.getAttribute(selector, name);
await frame.getAttribute(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя атрибута, значение которого нужно получить.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
hover
Added before v1.9Use locator-based locator.hover() instead. Read more about locators.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на совпадающем элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы навести курсор на центр элемента или указанную position.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.hover(selector);
await frame.hover(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
Следует ли обходить проверки actionability. По умолчанию
false
. -
modifiers
Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются в данный момент нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
boolean (optional) Added in: v1.28#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно, чтобы подождать, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
innerHTML
Added before v1.9Use locator-based locator.innerHTML() instead. Read more about locators.
Возвращает element.innerHTML
.
Использование
await frame.innerHTML(selector);
await frame.innerHTML(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() methods.
-
Возвращает
innerText
Added before v1.9Use locator-based locator.innerText() instead. Read more about locators.
Возвращает element.innerText
.
Использование
await frame.innerText(selector);
await frame.innerText(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
inputValue
Added in: v1.13Use locator-based locator.inputValue() instead. Read more about locators.
Возвращает input.value
для выбранного элемента <input>
, <textarea>
или <select>
.
Выбрасывает исключение для не-input элементов. Однако, если элемент находится внутри элемента <label>
, который имеет ассоциированный control, возвращает значение этого контрола.
Использование
await frame.inputValue(selector);
await frame.inputValue(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isChecked
Added before v1.9Use locator-based locator.isChecked() instead. Read more about locators.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является чекбоксом или радио-кнопкой.
Использование
await frame.isChecked(selector);
await frame.isChecked(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isDisabled
Added before v1.9Use locator-based locator.isDisabled() instead. Read more about locators.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
await frame.isDisabled(selector);
await frame.isDisabled(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEditable
Added before v1.9Use locator-based locator.isEditable() instead. Read more about locators.
Возвращает, является ли элемент редактируемым.
Использование
await frame.isEditable(selector);
await frame.isEditable(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isHidden
Added before v1.9Use locator-based locator.isHidden() instead. Read more about locators.
Возвращает, является ли элемент скрытым, противоположность видимости. Селектор, который не соответствует ни одному элементу, считается скрытым.
Использование
await frame.isHidden(selector);
await frame.isHidden(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Deprecated
Эта опция игнорируется. frame.isHidden() не ждет, пока элемент станет скрытым, и возвращается немедленно.
-
Возвращает
isVisible
Added before v1.9Use locator-based locator.isVisible() instead. Read more about locators.
Возвращает, является ли элемент видимым. Селектор, который не соответствует ни одному элементу, считается невидимым.
Использование
await frame.isVisible(selector);
await frame.isVisible(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Deprecated
Эта опция игнорируется. frame.isVisible() не ждет, пока элемент станет видимым, и возвращается немедленно.
-
Возвращает
press
Added before 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"
. При указании с модификатором, модификатор нажимается и удерживается, пока не будет нажата последующая клавиша.
Использование
await frame.press(selector, key);
await frame.press(selector, key, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Имя клавиши для нажатия или символ для генерации, например,
ArrowLeft
илиa
. -
options
Object (optional)-
Время ожидания между
keydown
иkeyup
в миллисекундах. По умолчанию 0. -
noWaitAfter
boolean (optional)#УстарелоЭта опция по умолчанию будет
true
в будущем.Действия, инициирующие навигации, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Эта опция нужна только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false
. -
strict
boolean (optional) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
selectOption
Добавлено до v1.9Используйте основанный на локаторах locator.selectOption() вместо этого. Подробнее о локаторах.
Этот метод ожидает элемент, соответствующий selector, ожидает проверки actionability, ждет, пока все указанные опции будут присутствовать в элементе <select>
, и выбирает эти опции.
Если целевой элемент не является элементом <select>
, этот метод выбрасывает ошибку. Однако, если элемент находится внутри элемента <label>
, который имеет связанный control, будет использован этот контрол.
Возвращает массив значений опций, которые были успешно выбраны.
Вызывает событие change
и input
, как только все предоставленные опции были выбраны.
Использование
// Одиночный выбор, соответствующий значению или метке
frame.selectOption('select#colors', 'blue');
// одиночный выбор, соответствующий как значению, так и метке
frame.selectOption('select#colors', { label: 'Blue' });
// множественный выбор
frame.selectOption('select#colors', 'red', 'green', 'blue');
Аргументы
-
Селектор для запроса.
-
values
null | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>#-
value
string (optional)Соответствует
option.value
. Необязательно. -
label
string (optional)Соответствует
option.label
. Необязательно. -
index
number (optional)Соответствует индексу. Необязательно.
Опции для выбора. Если у
<select>
есть атрибутmultiple
, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают. -
-
options
Object (optional)-
force
boolean (optional) Добавлено в: v1.13#Следует ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (optional)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
strict
boolean (optional) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
setChecked
Добавлено в: v1.15Используйте locator.setChecked() на основе локаторов вместо этого. Подробнее о локаторах.
Этот метод устанавливает или снимает флажок с элемента, соответствующего селектору, выполняя следующие шаги:
- Найдите элемент, соответствующий селектору. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод вызывает ошибку.
- Если элемент уже имеет правильное состояние флажка, этот метод сразу возвращает управление.
- Подождите, пока не будут выполнены проверки actionability для найденного элемента, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse для клика в центр элемента.
- Убедитесь, что элемент теперь отмечен или не отмечен. Если нет, этот метод вызывает ошибку.
Если все шаги в совокупности не завершились в течение указанного тайм-аута, этот метод вызывает TimeoutError. Передача нулевого тайм-аута отключает это.
Использование
await frame.setChecked(selector, checked);
await frame.setChecked(selector, checked, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Указывает, следует ли установить или снять флажок.
-
options
Object (опционально)-
Указывает, следует ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
position
Object (опционально)#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию, без его выполнения.
-
Возвращает
setInputFiles
Добавлено до v1.9Используйте locator.setInputFiles() на основе локаторов вместо этого. Подробнее о локаторах.
Устанавливает значение элемента ввода файла в указанные пути к файлам или файлы. Если некоторые из filePaths
являются относительными путями, они разрешаются относительно текущей рабочей директории. Для пустого массива очищает выбранные файлы.
Этот метод ожидает, что селектор указывает на элемент ввода. Однако, если элемент находится внутри элемента <label>
, который имеет связанный контрол, он нацелен на контрол.
Использование
await frame.setInputFiles(selector, files);
await frame.setInputFiles(selector, files, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (опционально)-
noWaitAfter
boolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
strict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
tap
Added before v1.9Use locator-based locator.tap() instead. Read more about locators.
Этот метод выполняет нажатие на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.touchscreen для нажатия на центр элемента или указанную position.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
frame.tap()
требует, чтобы опция hasTouch
в контексте браузера была установлена в true.
Использование
await frame.tap(selector);
await frame.tap(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
Следует ли обходить проверки actionability. По умолчанию
false
. -
modifiers
Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (optional)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfter
boolean (optional)#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiers
будут нажаты независимо отtrial
, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
textContent
Added before v1.9Use locator-based locator.textContent() instead. Read more about locators.
Возвращает element.textContent
.
Использование
await frame.textContent(selector);
await frame.textContent(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
type
Added before 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
Object (optional)-
Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию 0.
-
noWaitAfter
boolean (optional)#DeprecatedЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
uncheck
Added before v1.9Use locator-based locator.uncheck() instead. Read more about locators.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят, этот метод немедленно возвращается.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.uncheck(selector);
await frame.uncheck(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
options
Object (optional)-
Следует ли обходить проверки actionability. По умолчанию
false
. -
noWaitAfter
boolean (optional)#DeprecatedЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
position
Object (optional) Added in: v1.11#Точка, используемая относительно верхнего левого угла рамки элемента. Если не указано, используется видимая точка элемента.
-
strict
boolean (optional) Added in: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trial
boolean (optional) Added in: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false
. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
-
Возвращает
waitForNavigation
Added before v1.9This method is inherently racy, please use frame.waitForURL() instead.
Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null
.
Использование
Этот метод ожидает, пока фрейм перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:
// Начните ожидание навигации перед кликом. Обратите внимание, что нет await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise;
Использование History API для изменения URL считается навигацией.
Аргументы
options
Object (optional)-
Максимальное время операции в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeout
в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
url
string | RegExp | function(URL):boolean (optional)#Глобальный шаблон, регулярное выражение или предикат, получающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр является строкой без символов подстановки, метод будет ожидать навигации к URL, который точно равен строке.
-
waitUntil
"load" | "domcontentloaded" | "networkidle" | "commit" (optional)#Когда считать операцию успешной, по умолчанию
load
. События могут быть:'domcontentloaded'
- считать операцию завершенной, когда событиеDOMContentLoaded
будет вызвано.'load'
- считать операцию завершенной, когда событиеload
будет вызвано.'networkidle'
- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500
мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'
- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
waitForSelector
Added before v1.9Use web assertions that assert visibility or a locator-based locator.waitFor() instead. Read more about locators.
Возвращает, когда элемент, указанный селектором, удовлетворяет опции state. Возвращает null
, если ожидание для hidden
или detached
.
Playwright автоматически ожидает, когда элемент будет готов, прежде чем выполнить действие. Использование объектов Locator и веб-утверждений делает код свободным от ожидания селектора.
Ожидает, когда selector удовлетворит опции state (либо появится/исчезнет из DOM, либо станет видимым/скрытым). Если в момент вызова метода selector уже удовлетворяет условию, метод вернется немедленно. Если селектор не удовлетворяет условию в течение timeout миллисекунд, функция выбросит исключение.
Использование
Этот метод работает через навигации:
const { chromium } = require('playwright'); // Или 'firefox' или 'webkit'.
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
for (const currentURL of ['https://google.com', 'https://bbc.com']) {
await page.goto(currentURL);
const element = await page.mainFrame().waitForSelector('img');
console.log('Loaded image: ' + await element.getAttribute('src'));
}
await browser.close();
})();
Аргументы
-
Селектор для запроса.
-
options
Object (опционально)-
state
"attached" | "detached" | "visible" | "hidden" (опционально)#По умолчанию
'visible'
. Может быть:'attached'
- ожидание, когда элемент будет присутствовать в DOM.'detached'
- ожидание, когда элемент не будет присутствовать в DOM.'visible'
- ожидание, когда элемент будет иметь непустую ограничивающую рамку и не будетvisibility:hidden
. Обратите внимание, что элемент без какого-либо содержимого или сdisplay:none
имеет пустую ограничивающую рамку и не считается видимым.'hidden'
- ожидание, когда элемент будет либо отсоединен от DOM, либо иметь пустую ограничивающую рамку илиvisibility:hidden
. Это противоположно опции'visible'
.
-
strict
boolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0
- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeout
в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлено до v1.9Никогда не ждите таймаута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ожидают автоматически.
Ожидает заданный timeout в миллисекундах.
Обратите внимание, что frame.waitForTimeout()
следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Вместо этого используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие.
Использование
await frame.waitForTimeout(timeout);
Аргументы
Возвращает