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);
Аргументы
optionsObject (опционально)-
Сырой 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);
Аргументы
optionsObject (опционально)
Возвращает
childFrames
Добавлено до v1.9Использование
frame.childFrames();
Возвращает
content
Добавлено до v1.9Получает полный HTML-контент фрейма, включая doctype.
Использование
await frame.content();
await frame.content(options);
Аргументы
optionsObject (необязательно)-
includeShadowboolean (необязательно) Добавлено в: v1.64#Если установлено значение
true, содержимое открытых теневых корней включается в виде декларативного теневого DOM, то есть элементов<template shadowrootmode="open">, вложенных в соответствующие элементы-хозяева. Закрытые теневые корни никогда не включаются. По умолчанию —false.
-
Возвращает
dragAndDrop
Добавлено в: v1.13Использование
await frame.dragAndDrop(source, target);
await frame.dragAndDrop(source, target, options);
Аргументы
-
Селектор для поиска элемента, который нужно перетащить. Если селектор удовлетворяет несколько элементов, будет использован первый.
-
Селектор для поиска элемента, на который нужно сбросить. Если селектор удовлетворяет несколько элементов, будет использован первый.
-
optionsObject (опционально)-
Нужно ли обходить проверки actionability. По умолчанию
false. -
noWaitAfterboolean (опционально)#УстарелоЭтот параметр не имеет эффекта.
-
Этот параметр не оказывает никакого влияния.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе с прокруткой вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшено исключение. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
sourcePositionObject (необязательно) Добавлено в: v1.14#Кликает по исходному элементу в этой точке, заданной относительно верхнего левого угла области padding элемента. Если не указано, используется какая‑то видимая точка элемента.
-
stepsnumber (опционально) Добавлено в: v1.57#По умолчанию
1. Отправляетnинтерполированных событийmousemove, чтобы смоделировать перемещение междуmousedownиmouseupпри перетаскивании. Если установить1, будет сгенерировано одно событиеmousemoveв точке назначения. -
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
targetPositionObject (опционально) Добавлено в: 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.evaluateHandle('document.body');
const html = await frame.evaluate(([body, suffix]) =>
body.innerHTML + suffix, [bodyHandle, 'hello'],
);
await bodyHandle.dispose();
Аргументы
-
pageFunctionfunction | string#Функция, которая будет выполнена в контексте страницы.
-
argEvaluationArgument (опционально)#
Необязательный аргумент, передаваемый в pageFunction.
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно) Добавлено в: v1.62#Если установлено значение
true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значениеfalse: в этом случае функции не поддаются сериализации, и попытка передать функцию приводит к ошибке.
-
Возвращает
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();
Аргументы
-
pageFunctionfunction | string#Функция, которая будет выполнена в контексте страницы.
-
argEvaluationArgument (опционально)#
Необязательный аргумент для передачи в pageFunction.
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно) Добавлено в: v1.62#Если установлено значение
true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Под капотом каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значениеfalse: в этом случае функции не подлежат сериализации, и попытка передать функцию приводит к ошибке.
-
Возвращает
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.
При вызове без selector поиск начинается в этом фрейме или в любом из вложенных в него iframe, поэтому вам не нужно предварительно находить каждый iframe. Обратите внимание, что оставшаяся часть локатора разрешается внутри одного фрейма, как и любой другой локатор. Если он соответствует элементам в нескольких фреймах, возникает ошибка.
Использование
Следующий фрагмент кода находит элемент с текстом "Submit" в iframe с id my-frame, например, <iframe id="my-frame">:
const locator = frame.frameLocator('#my-iframe').getByText('Submit');
await locator.click();
Следующий фрагмент кода находит кнопку либо в текущем фрейме, либо в одном из вложенных в него iframe:
const locator = frame.frameLocator().getByRole('button');
await locator.click();
Аргументы
-
selectorstring (необязательный)#Селектор, соответствующий элементу фрейма. Если он не указан, локатор ищет совпадения в текущем фрейме или в любом из вложенных в него iframe.
Возвращает
getByAltText
Добавлено в версии: v1.27Позволяет находить элементы по их alt тексту.
Использование
Например, этот метод найдет изображение по alt тексту "Playwright logo":
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click();
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
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');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
getByPlaceholder
Добавлено в: v1.27Позволяет находить элементы ввода по тексту-заполнителю.
Использование
Например, рассмотрим следующую структуру DOM.
<input type="email" placeholder="name@example.com" />
Вы можете заполнить поле ввода, найдя его по тексту-заполнителю:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
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 роль.
-
optionsObject (опционально)
Подробнее об aria-checked.
-
descriptionstring | RegExp (необязательно) Добавлено в: v1.60#Параметр для сопоставления с доступным описанием. По умолчанию сопоставление выполняется без учёта регистра и ищет подстроку; используйте exact для управления этим поведением.
Подробнее о доступном описании.
-
disabledboolean (необязательно)#Атрибут, который обычно устанавливается
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется через иерархию DOM. Узнайте больше оaria-disabled.
Определяет, должны ли name и description совпадать точно: с учётом регистра и по всей строке. По умолчанию — false. Игнорируется, если значение является регулярным выражением. Обратите внимание, что даже при точном совпадении пробельные символы в начале и конце строки удаляются.
-
expandedboolean (необязательный)#Атрибут, который обычно устанавливается
aria-expanded.Узнайте больше о
aria-expanded. -
includeHiddenboolean (опционально)#Опция, которая контролирует, будут ли скрытые элементы соответствовать. По умолчанию, только не скрытые элементы, как определено ARIA, соответствуют селектору роли.
Узнайте больше о
aria-hidden. -
Числовой атрибут, который обычно присутствует для ролей
heading,listitem,row,treeitem, с значениями по умолчанию для элементов<h1>-<h6>.Узнайте больше о
aria-level. -
namestring | RegExp (опционально)#Опция для сопоставления доступного имени. По умолчанию, сопоставление не учитывает регистр и ищет подстроку, используйте exact для управления этим поведением.
Узнайте больше о доступном имени.
-
pressedboolean (опционально)#Атрибут, который обычно устанавливается
aria-pressed.Узнайте больше о
aria-pressed. -
selectedboolean (опционально)#Атрибут, который обычно устанавливается
aria-selected.Узнайте больше о
aria-selected.
Возвращает
Детали
Селектор роли не заменяет аудиты доступности и тесты на соответствие, но дает раннюю обратную связь о руководствах ARIA.
Многие HTML-элементы имеют неявно определенную роль, которая распознается селектором роли. Вы можете найти все поддерживаемые роли здесь. Руководства ARIA не рекомендуют дублировать неявные роли и атрибуты, устанавливая role и/или aria-* атрибуты на значения по умолчанию.
getByTestId
Добавлено в: 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
Добавлено в: 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);
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
Детали
Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.
Элементы ввода типа button и submit сопоставляются по их value, а не по содержимому текста. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.
getByTitle
Добавлено в: v1.27Позволяет находить элементы по их атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
Вы можете проверить количество проблем, найдя его по тексту заголовка:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
Аргументы
-
Текст для поиска элемента.
-
optionsObject (опционально)
Возвращает
goto
Добавлено до 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://. -
optionsObject (опционально)
Значение заголовка Referer. Если указано, оно имеет приоритет над значением заголовка referer, заданным с помощью page.setExtraHTTPHeaders().
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
Возвращает
isDetached
Добавлено до v1.9Возвращает true, если фрейм был отсоединен, или false в противном случае.
Использование
frame.isDetached();
Возвращает
isEnabled
Добавлено до v1.9Возвращает, является ли элемент включенным.
Использование
await frame.isEnabled(selector);
await frame.isEnabled(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
locator
Добавлено в: v1.14Метод возвращает локатор элемента, который можно использовать для выполнения действий на этой странице / фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий на одном и том же локаторе может фактически выполняться на разных элементах DOM. Это произойдет, если структура DOM между этими действиями изменилась.
Использование
frame.locator(selector);
frame.locator(selector, options);
Аргументы
-
Селектор для использования при разрешении DOM элемента.
-
optionsObject (опционально)-
Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article, который имеетtext=Playwright, соответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему локатору и запрашивается, начиная с совпадения внешнего локатора, а не с корня документа. Например, вы можете найти
content, который имеетdivв<article><content><div>Playwright</div></content></article>. Однако поискcontent, который имеетarticle div, не удастся, потому что внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNotLocator (опционально) Добавлено в: v1.33#Соответствует элементам, которые не содержат элемент, соответствующий внутреннему локатору. Внутренний локатор запрашивается относительно внешнего. Например,
article, который не имеетdiv, соответствует<article><span>Playwright</span></article>.Обратите внимание, что внешние и внутренние локаторы должны принадлежать одному и тому же фрейму. Внутренний локатор не должен содержать FrameLocators.
-
hasNotTextstring | RegExp (опционально) Добавлено в: v1.33#Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string сопоставление нечувствительно к регистру и ищет подстроку.
-
hasTextstring | 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-разметка, которую нужно задать для страницы.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
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
Добавлено до 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);
Аргументы
-
pageFunctionfunction | string#Функция, которая будет выполнена в контексте страницы.
-
argEvaluationArgument (опционально)#Необязательный аргумент для передачи в pageFunction.
-
optionsObject (опционально)
Если polling имеет значение 'raf', то pageFunction постоянно выполняется в функции обратного вызова requestAnimationFrame. Если polling — число, оно интерпретируется как интервал в миллисекундах, с которым будет выполняться функция. По умолчанию используется raf.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательный)#Максимальное время ожидания в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
waitForLoadState
Добавлено до v1.9Ожидает достижения требуемого состояния загрузки.
Этот метод возвращает, когда фрейм достигает требуемого состояния загрузки, по умолчанию load. Навигация должна быть завершена, когда вызывается этот метод. Если текущий документ уже достиг требуемого состояния, метод разрешается немедленно.
В большинстве случаев этот метод не нужен, потому что Playwright автоматически ожидает перед каждым действием.
Использование
await frame.click('button'); // Клик вызывает навигацию.
await frame.waitForLoadState(); // По умолчанию ожидает состояния 'load'.
Аргументы
state"load" | "domcontentloaded" | "networkidle" (опционально)#
Необязательное состояние загрузки, которого необходимо дождаться; по умолчанию — load. Если при загрузке текущего документа указанное состояние уже было достигнуто, метод завершается немедленно. Допустимые значения:
'load'- ожидать наступления событияload.'domcontentloaded'- ожидать наступления событияDOMContentLoaded.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ ожидать отсутствия сетевых соединений в течение как минимум500мс. Не используйте этот метод в тестах; вместо этого полагайтесь на веб-утверждения для проверки готовности.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForURL
Добавлено в: v1.11Ожидает, пока фрейм перейдет на указанный URL.
Использование
await frame.click('a.delayed-navigation'); // Клик по ссылке косвенно вызывает навигацию
await frame.waitForURL('**/target.html');
Аргументы
-
urlstring | RegExp | URLPattern | function(URL):boolean#Glob-шаблон, регулярное выражение, шаблон URL или предикат, принимающий URL, для сопоставления URL при ожидании навигации. Обратите внимание: если параметр — строка без подстановочных символов, метод будет ожидать навигации на URL, в точности совпадающий с этой строкой.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция выбросит ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время операции в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииnavigationTimeoutв конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда будет вызвано событиеDOMContentLoaded.'load'- считать операцию завершенной, когда будет вызвано событиеload.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда получен сетевой ответ и документ начал загружаться.
-
Возвращает
Свойства
webmcp
Добавлено в: v1.64Инструменты, которые фрейм регистрирует через экспериментальный браузерный API WebMCP. Подробности см. в разделе WebMCP.
Использование
frame.webmcp
Тип
Устаревшие элементы
$
Добавлено в: v1.9Используйте основанный на локаторах frame.locator() вместо этого. Подробнее о локаторах.
Возвращает ElementHandle, указывающий на элемент фрейма.
Использование ElementHandle не рекомендуется, вместо этого используйте объекты Locator и утверждения, ориентированные на веб.
Метод находит элемент, соответствующий указанному селектору внутри фрейма. Если ни один элемент не соответствует селектору, возвращает null.
Использование
await frame.$(selector);
await frame.$(selector, options);
Аргументы
-
Селектор для поиска.
-
optionsObject (опционально)
Возвращает
$$
Добавлено в: 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');
Аргументы
-
Селектор для поиска.
-
pageFunctionfunction(Element) | string#Функция для выполнения в контексте страницы.
-
argEvaluationArgument (опционально)#Опциональный аргумент для передачи в pageFunction.
-
optionsObject (опционально)
Возвращает
$$eval
Добавлено в: v1.9В большинстве случаев locator.evaluateAll(), другие методы Locator и утверждения, ориентированные на веб, выполняют работу лучше.
Возвращает значение, возвращаемое pageFunction.
Метод находит все элементы, соответствующие указанному селектору в фрейме, и передает массив найденных элементов в качестве первого аргумента в pageFunction.
Если pageFunction возвращает Promise, то frame.$$eval() будет ожидать разрешения промиса и вернет его значение.
Использование
const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
Аргументы
-
Селектор для поиска.
-
pageFunctionfunction(Array<Element>) | string#Функция, которая будет выполнена в контексте страницы.
-
argEvaluationArgument (опционально)#Опциональный аргумент для передачи в pageFunction.
Возвращает
check
Добавлено до v1.9Используйте основанный на локаторах locator.check() вместо этого. Подробнее о локаторах.
Этот метод отмечает элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже отмечен, этот метод возвращает управление немедленно.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.mouse, чтобы кликнуть в центр элемента.
- Убедитесь, что элемент теперь отмечен. Если нет, этот метод выбрасывает исключение.
Если все шаги не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.check(selector);
await frame.check(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется
"auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. Если установлено значение"none", Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области видимости. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: 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);
Аргументы
selectorstring# Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.optionsObject (необязательно)-
button"left" | "right" | "middle" (необязательно)#По умолчанию —
left. -
clickCountnumber (необязательно)#По умолчанию — 1. См. UIEvent.detail.
-
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию — 0. -
forceboolean (необязательно)#Определяет, следует ли пропускать проверки готовности к действию. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)#Клавиши-модификаторы, которые нужно нажать. Гарантирует, что во время операции будут нажаты только указанные модификаторы, а после её завершения восстанавливает исходное состояние модификаторов. Если параметр не указан, используются модификаторы, нажатые в данный момент. Значение "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)#УстарелоВ будущем значением этого параметра по умолчанию станет
true.Действия, инициирующие навигацию, ожидают её выполнения и начала загрузки страниц. Вы можете отключить ожидание, установив этот флаг. Этот параметр нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию —
false. -
positionObject (необязательно)#Точка, заданная относительно левого верхнего угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу до появления элемента в области просмотра перед выполнением действия. По умолчанию —
"auto": при необходимости выполняется прокрутка до элемента, включая прокрутку вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку до элемента, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выдачей ошибки. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#При значении
trueвызов требует, чтобы селектор соответствовал ровно одному элементу. Если указанный селектор соответствует нескольким элементам, вызов генерирует исключение. -
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию —
0, то есть без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно) Добавлено в: v1.11#Если параметр установлен, этот метод выполняет только проверки готовности к действию, пропуская само действие. По умолчанию —
false. Полезно для ожидания готовности элемента к действию без его выполнения. Обратите внимание: клавиши-модификаторы, указанные вmodifiers, будут нажаты независимо от значенияtrial, что позволяет проверять элементы, видимые только при нажатии этих клавиш.
-
Возвращает
dblclick
Добавлено до v1.9Используйте основанный на локаторах locator.dblclick() вместо этого. Подробнее о локаторах.
Этот метод выполняет двойной клик по элементу, соответствующему selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на соответствующем элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse для двойного клика в центре элемента или в указанной position. если первый клик
dblclick()вызывает событие навигации, этот метод вызовет ошибку.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод вызовет TimeoutError. Передача нулевого тайм-аута отключает это.
frame.dblclick() отправляет два события click и одно событие dblclick.
Использование
await frame.dblclick(selector);
await frame.dblclick(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
button"left" | "right" | "middle" (опционально)#По умолчанию
left. -
Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию 0. -
Пропускать ли проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Клавиши-модификаторы для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается как "Control" на Windows и Linux и как "Meta" на macOS.
-
noWaitAfterboolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется
"auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
dispatchEvent
Добавлено до v1.9Используйте основанный на локаторах locator.dispatchEvent() вместо этого. Подробнее о локаторах.
Пример ниже отправляет событие click на элемент. Независимо от состояния видимости элемента, click отправляется. Это эквивалентно вызову element.click().
Использование
await frame.dispatchEvent('button#submit', 'click');
Под капотом он создаёт экземпляр события на основе указанного type, инициализирует его свойствами eventInit и отправляет его элементу. События по умолчанию являются composed, cancelable и всплывают.
Поскольку eventInit зависит от конкретного события, пожалуйста, обратитесь к документации по событиям для списка начальных свойств:
- DeviceMotionEvent
- DeviceOrientationEvent
- DragEvent
- Event
- FocusEvent
- KeyboardEvent
- MouseEvent
- PointerEvent
- TouchEvent
- WheelEvent
Вы также можете указать JSHandle в качестве значения свойства, если хотите, чтобы в событие передавались живые объекты:
// Note you can only create DataTransfer in Chromium and Firefox
const dataTransfer = await frame.evaluateHandle(() => new DataTransfer());
await frame.dispatchEvent('#source', 'dragstart', { dataTransfer });
Аргументы
-
Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
-
Тип события DOM:
"click","dragstart"и т. д. -
eventInitEvaluationArgument (опционально)#
Необязательные свойства инициализации, специфичные для события.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если заданный селектор разрешается более чем в один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0— без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
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]. -
optionsObject (опционально)-
forceboolean (опционально) Добавлено в: v1.13#Нужно ли обходить проверки actionability. По умолчанию
false. -
noWaitAfterboolean (опционально)#УстарелоЭтот параметр не имеет эффекта.
-
Этот параметр не оказывает никакого влияния.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: 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);
Аргументы
Селектор для поиска элемента. Если селектору соответствует несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Когда true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов вызывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлено до v1.9Вместо этого используйте вариант на основе локаторов — locator.getAttribute(). Подробнее читайте о локаторах.
Возвращает значение атрибута элемента.
Использование
await frame.getAttribute(selector, name);
await frame.getAttribute(selector, name, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
Имя атрибута, значение которого нужно получить.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
hover
Добавлено до v1.9Используйте основанный на локаторах locator.hover() вместо этого. Подробнее о локаторах.
Этот метод наводит курсор на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на совпадающем элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы навести курсор на центр элемента или указанную position.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.hover(selector);
await frame.hover(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы обратно. Если не указано, используются в данный момент нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfterboolean (опционально) Добавлено в: v1.28#УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
Точка относительно левого верхнего угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу или контейнеры, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется
"auto": при необходимости выполняется прокрутка, в том числе вложенных прокручиваемых контейнеров, чтобы элемент оказался в области просмотра. Если задано"none", Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно, чтобы подождать, пока элемент будет готов к действию, не выполняя его. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
innerHTML
Добавлено до v1.9Используйте основанный на локаторах locator.innerHTML() вместо этого. Подробнее о локаторах.
Возвращает element.innerHTML.
Использование
await frame.innerHTML(selector);
await frame.innerHTML(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() methods.
-
Возвращает
innerText
Добавлено до v1.9Вместо этого используйте вариант на основе локаторов — locator.innerText(). Подробнее читайте о локаторах.
Возвращает element.innerText.
Использование
await frame.innerText(selector);
await frame.innerText(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
inputValue
Добавлено в: v1.13Используйте основанный на локаторах locator.inputValue() вместо этого. Подробнее о локаторах.
Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.
Выбрасывает исключение для не-input элементов. Однако, если элемент находится внутри элемента <label>, который имеет ассоциированный control, возвращает значение этого контрола.
Использование
await frame.inputValue(selector);
await frame.inputValue(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлено до v1.9Используйте основанный на локаторах locator.isChecked() вместо этого. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает исключение, если элемент не является чекбоксом или радио-кнопкой.
Использование
await frame.isChecked(selector);
await frame.isChecked(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлено до v1.9Используйте основанный на локаторах locator.isDisabled() вместо этого. Подробнее о локаторах.
Возвращает, отключен ли элемент, противоположность enabled.
Использование
await frame.isDisabled(selector);
await frame.isDisabled(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлено до v1.9Вместо этого используйте вариант на основе локаторов — locator.isEditable(). Подробнее читайте о локаторах.
Возвращает, является ли элемент редактируемым.
Использование
await frame.isEditable(selector);
await frame.isEditable(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до v1.9Используйте основанный на локаторах locator.isHidden() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент скрытым, противоположность видимости. Селектор, который не соответствует ни одному элементу, считается скрытым.
Использование
await frame.isHidden(selector);
await frame.isHidden(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Устарело
Эта опция игнорируется. frame.isHidden() не ждет, пока элемент станет скрытым, и возвращается немедленно.
-
Возвращает
isVisible
Добавлено до v1.9Используйте основанный на локаторах locator.isVisible() вместо этого. Подробнее о локаторах.
Возвращает, является ли элемент видимым. Селектор, который не соответствует ни одному элементу, считается невидимым.
Использование
await frame.isVisible(selector);
await frame.isVisible(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Устарело
Эта опция игнорируется. frame.isVisible() не ждет, пока элемент станет видимым, и возвращается немедленно.
-
Возвращает
press
Добавлено до v1.9Используйте основанный на локаторах locator.press() вместо этого. Подробнее о локаторах.
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. -
optionsObject (опционально)-
Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию 0. -
noWaitAfterboolean (опционально)#УстарелоЭта опция по умолчанию будет
trueв будущем.Действия, инициирующие навигации, ожидают, пока эти навигации произойдут и страницы начнут загружаться. Вы можете отказаться от ожидания, установив этот флаг. Эта опция нужна только в исключительных случаях, таких как навигация на недоступные страницы. По умолчанию
false.
-
Действия, инициирующие навигацию, ожидают начала этой навигации и загрузки страниц. Вы можете отключить ожидание, установив этот флаг. Эта опция нужна только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию используется значение false.
-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Максимальное время в миллисекундах. По умолчанию
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']);
Аргументы
-
Селектор для запроса.
-
valuesnull | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>#-
valuestring (опционально)Соответствует
option.value. Необязательно. -
labelstring (опционально)Соответствует
option.label. Необязательно. -
indexnumber (опционально)Соответствует индексу. Необязательно.
Опции для выбора. Если у
<select>есть атрибутmultiple, все соответствующие опции выбираются, в противном случае выбирается только первая опция, соответствующая одной из переданных опций. Строковые значения соответствуют как значениям, так и меткам. Опция считается соответствующей, если все указанные свойства совпадают. -
-
optionsObject (опционально)
Этот параметр не оказывает никакого влияния.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Максимальное время в миллисекундах. По умолчанию
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);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Указывает, следует ли установить или снять флажок.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется значение
"auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)#Если 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);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Этот параметр не оказывает никакого влияния.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Максимальное время в миллисекундах. По умолчанию
0- без тайм-аута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
tap
Добавлено до v1.9Вместо этого используйте вариант на основе локаторов — locator.tap(). Подробнее читайте о локаторах.
Этот метод выполняет нажатие на элемент, соответствующий selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если такого элемента нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если только не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в видимую область, если это необходимо.
- Используйте page.touchscreen для нажатия на центр элемента или указанную position.
Если все шаги в совокупности не завершились в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
frame.tap() требует, чтобы опция hasTouch в контексте браузера была установлена в true.
Использование
await frame.tap(selector);
await frame.tap(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)-
Следует ли обходить проверки actionability. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#Модификаторные клавиши для нажатия. Гарантирует, что только эти модификаторы будут нажаты во время операции, а затем восстанавливает текущие модификаторы. Если не указано, используются текущие нажатые модификаторы. "ControlOrMeta" разрешается в "Control" на Windows и Linux и в "Meta" на macOS.
-
noWaitAfterboolean (опционально)#УстарелоЭта опция не имеет эффекта.
Эта опция не имеет эффекта.
-
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется
"auto": при необходимости выполняется прокрутка до элемента, в том числе во вложенных прокручиваемых контейнерах. Если установлено значение"none", Playwright не выполняет прокрутку до элемента, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения. Обратите внимание, что клавиатурныеmodifiersбудут нажаты независимо отtrial, чтобы позволить тестировать элементы, которые видны только при нажатии этих клавиш.
Возвращает
textContent
Добавлено до v1.9Вместо этого используйте вариант на основе локаторов — locator.textContent(). Подробнее читайте о локаторах.
Возвращает element.textContent.
Использование
await frame.textContent(selector);
await frame.textContent(selector, options);
Аргументы
Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
type
Добавлено до v1.9В большинстве случаев вам следует использовать locator.fill() вместо этого. Нажимать клавиши по одной нужно только если на странице есть специальная обработка клавиатуры — в этом случае используйте locator.pressSequentially().
Отправляет событие keydown, keypress/input и keyup для каждого символа в тексте. frame.type может использоваться для отправки детализированных событий клавиатуры. Для заполнения значений в полях формы используйте frame.fill().
Чтобы нажать специальную клавишу, такую как Control или ArrowDown, используйте keyboard.press().
Использование
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
Текст для ввода в фокусированный элемент.
-
optionsObject (опционально)
Этот параметр не оказывает никакого влияния.
-
signalAbortSignal (необязательный) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательный) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
Возвращает
uncheck
Добавлено до v1.9Вместо этого используйте вариант на основе локатора — locator.uncheck(). Подробнее о локаторах.
Этот метод снимает отметку с элемента, соответствующего selector, выполняя следующие шаги:
- Найдите элемент, соответствующий selector. Если его нет, подождите, пока соответствующий элемент не будет добавлен в DOM.
- Убедитесь, что найденный элемент является флажком или радиокнопкой. Если нет, этот метод выбрасывает исключение. Если элемент уже снят, этот метод немедленно возвращается.
- Подождите, пока не будут выполнены проверки actionability на найденном элементе, если не установлена опция force. Если элемент отсоединяется во время проверок, все действие повторяется.
- Прокрутите элемент в поле зрения, если это необходимо.
- Используйте page.mouse, чтобы щелкнуть в центре элемента.
- Убедитесь, что элемент теперь снят. Если нет, этот метод выбрасывает исключение.
Когда все шаги в совокупности не завершены в течение указанного timeout, этот метод выбрасывает TimeoutError. Передача нулевого таймаута отключает это.
Использование
await frame.uncheck(selector);
await frame.uncheck(selector, options);
Аргументы
-
Селектор для поиска элемента. Если несколько элементов удовлетворяют селектору, будет использован первый.
-
optionsObject (опционально)
Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.
-
scroll"auto" | "none" (необязательно) Добавлено в: v1.62#Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется значение
"auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении"none"Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что пользователь может взаимодействовать с элементом без дополнительной прокрутки. -
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить с помощью опцииactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (опционально) Добавлено в: v1.11#Если установлено, этот метод выполняет только проверки actionability и пропускает действие. По умолчанию
false. Полезно для ожидания, пока элемент будет готов к действию без его выполнения.
Возвращает
waitForNavigation
Добавлено до v1.9Этот метод по своей природе подвержен состояниям гонки, пожалуйста, используйте frame.waitForURL() вместо него.
Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае нескольких перенаправлений навигация будет разрешена с ответом последнего перенаправления. В случае навигации к другому якорю или навигации из-за использования History API, навигация будет разрешена с null.
Использование
Этот метод ожидает, пока фрейм перейдет на новый URL. Это полезно, когда вы выполняете код, который косвенно вызывает навигацию фрейма. Рассмотрим этот пример:
// Начните ожидание навигации перед кликом. Обратите внимание, что нет await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise;
Использование History API для изменения URL считается навигацией.
Аргументы
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)#Максимальное время выполнения операции в миллисекундах. По умолчанию равно
0— без ограничения времени. Значение по умолчанию можно изменить с помощью параметраnavigationTimeoutв конфигурации или методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout(). -
urlstring | RegExp | URLPattern | function(URL):boolean (необязательно)#Glob-шаблон, регулярное выражение, шаблон URL или функция-предикат, принимающая URL, для проверки соответствия URL при ожидании навигации. Обратите внимание: если параметр представляет собой строку без подстановочных символов, метод будет ожидать навигации на URL, в точности совпадающий с этой строкой.
-
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#Когда считать операцию успешной, по умолчанию
load. События могут быть:'domcontentloaded'- считать операцию завершенной, когда событиеDOMContentLoadedбудет вызвано.'load'- считать операцию завершенной, когда событиеloadбудет вызвано.'networkidle'- НЕ РЕКОМЕНДУЕТСЯ считать операцию завершенной, когда нет сетевых соединений в течение как минимум500мс. Не используйте этот метод для тестирования, полагайтесь на веб-утверждения для оценки готовности.'commit'- считать операцию завершенной, когда сетевой ответ получен и документ начал загружаться.
-
Возвращает
waitForSelector
Добавлено до v1.9Используйте веб-ассерты, проверяющие видимость, или основанный на локаторах locator.waitFor() вместо этого. Подробнее о локаторах.
Возвращает, когда элемент, указанный селектором, удовлетворяет опции 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();
})();
Аргументы
Селектор для поиска.
optionsObject (необязательно)-
signalAbortSignal (необязательно) Добавлено в: v1.62#Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
state"attached" | "detached" | "visible" | "hidden" (необязательно)#По умолчанию
'visible'. Может быть:'attached'- ожидание, когда элемент будет присутствовать в DOM.'detached'- ожидание, когда элемент не будет присутствовать в DOM.'visible'- ожидание, когда элемент будет иметь непустую ограничивающую рамку и не будетvisibility:hidden. Обратите внимание, что элемент без какого-либо содержимого или сdisplay:noneимеет пустую ограничивающую рамку и не считается видимым.'hidden'- ожидание, когда элемент будет либо отсоединен от DOM, либо иметь пустую ограничивающую рамку илиvisibility:hidden. Это противоположно опции'visible'.
-
strictboolean (опционально) Добавлено в: v1.14#Если true, вызов требует, чтобы селектор разрешался в один элемент. Если данный селектор разрешается в более чем один элемент, вызов выбрасывает исключение.
-
Максимальное время в миллисекундах. По умолчанию
0- без таймаута. Значение по умолчанию можно изменить через опциюactionTimeoutв конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлено до v1.9Никогда не ждите таймаута в производственной среде. Тесты, которые ждут времени, по своей природе ненадежны. Используйте действия Locator и веб-утверждения, которые ожидают автоматически.
Ожидает заданный timeout в миллисекундах.
Обратите внимание, что frame.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в производственной среде, будут ненадежными. Вместо этого используйте сигналы, такие как сетевые события, селекторы, становящиеся видимыми, и другие.
Использование
await frame.waitForTimeout(timeout);
Аргументы
Возвращает