Frame
В каждый момент времени страница предоставляет текущее дерево фреймов с помощью методов page.mainFrame() и frame.childFrames().
Жизненный цикл объекта Frame контролируется тремя событиями, отправляемыми объектом страницы:
- page.on('frameattached') — вызывается, когда фрейм присоединяется к странице. Фрейм можно присоединить к странице только один раз.
- page.on('framenavigated') — вызывается, когда фрейм переходит на другой URL.
- page.on('framedetached') — вызывается, когда фрейм отсоединяется от страницы. Фрейм можно отсоединить от страницы только один раз.
Пример вывода дерева фреймов:
const { firefox } = require('playwright'); // Or 'chromium' or '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 таблицы стилей или после внедрения содержимого CSS во фрейм.
Добавляет тег <script> на страницу с указанным URL или содержимым.
Использование
await frame.addScriptTag(); await frame.addScriptTag(options);
Аргументы
-
optionsObject (необязательно)-
contentstring (необязательно)Исходный код JavaScript для внедрения во фрейм.
-
pathstring (необязательно)Путь к файлу JavaScript для внедрения во фрейм. Если
path— относительный путь, он разрешается относительно текущего рабочего каталога. -
typestring (необязательно)Тип скрипта. Используйте 'module', чтобы загрузить модуль JavaScript ES6. Подробнее см. в разделе script.
-
urlstring (необязательно)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();
Возвращает
dragAndDrop
Использование
await frame.dragAndDrop(source, target); await frame.dragAndDrop(source, target, options);
Аргументы
-
sourcestringСелектор для поиска перетаскиваемого элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
targetstringСелектор для поиска элемента, на который нужно перетащить объект. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки возможности выполнения действия. По умолчанию
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу до элемента перед выполнением действия. По умолчанию
"auto": элемент прокручивается в область просмотра, если это необходимо, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано"none", Playwright не прокручивает страницу до элемента, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
sourcePositionObject (необязательно)Щелчок по исходному элементу в указанной точке относительно его верхнего левого угла внутренней области. Если точка не задана, используется видимая точка элемента.
-
stepsnumber (необязательно)По умолчанию 1. Отправляет
nинтерполированных событийmousemove, имитируя перемещение междуmousedownиmouseupперетаскивания. Если задано значение 1, в конечной точке отправляется одно событиеmousemove. -
strictboolean (необязательно)Если задано значение true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
targetPositionObject (необязательно)Отпускает кнопку мыши над целевым элементом в указанной точке относительно его верхнего левого угла внутренней области. Если точка не задана, используется видимая точка элемента.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
0— без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод только выполняет проверки возможности выполнения действия, не выполняя само действие. По умолчанию
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
evaluate
Добавлено до v1.9Возвращает результат выполнения pageFunction.
Если функция, переданная в frame.evaluate(), возвращает Promise, frame.evaluate() дождётся выполнения промиса и вернёт его значение.
Если функция, переданная в frame.evaluate(), возвращает значение, которое не является сериализуемым, 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); // prints "56" Вместо функции также можно передать строку.
console.log(await frame.evaluate('1 + 2')); // prints "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 (необязательно)Если задано значение
true, функции, переданные внутри arg, становятся доступными на странице и могут вызываться из функции страницы. При вызове функция возвращает Promise со своим результатом. Внутри каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов и контекстов страницы. Предоставленные функции удаляются при навигации верхнего уровня. По умолчаниюfalse; в этом случае функции не сериализуются, и их передача вызывает ошибку.
-
Возвращает
evaluateHandle
Добавлено до v1.9Возвращает результат выполнения pageFunction в виде JSHandle.
Единственное различие между frame.evaluate() и frame.evaluateHandle() состоит в том, что frame.evaluateHandle() возвращает JSHandle.
Если функция, переданная в frame.evaluateHandle(), возвращает Promise, frame.evaluateHandle() дождётся выполнения промиса и вернёт его значение.
Использование
// Handle for the window object const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));
Вместо функции также можно передать строку.
const aHandle = await frame.evaluateHandle('document'); // Handle for the '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 (необязательно)Если задано значение
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
При работе с iframe можно создать локатор фрейма, который войдёт в iframe и позволит выбирать элементы внутри него.
Если вызвать метод без селектора, поиск начнётся в этом фрейме или в любом из вложенных в него iframe, поэтому нет необходимости сначала находить каждый iframe. Обратите внимание: остальная часть локатора разрешается внутри одного фрейма, как и любой другой локатор. Если ему соответствуют элементы в нескольких фреймах, возникает ошибка.
Использование
Следующий фрагмент находит элемент с текстом "Submit" в iframe с идентификатором 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
Позволяет находить элементы по тексту атрибута alt.
Использование
Например, этот метод найдёт изображение по тексту alt "Playwright logo":
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click(); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учётом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
getByLabel
Позволяет находить элементы ввода по тексту связанного элемента <label> или aria-labelledby либо по атрибуту aria-label.
Использование
Например, в следующей DOM-структуре этот метод найдёт поля ввода по меткам "Username" и "Password":
<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 (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учётом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
getByPlaceholder
Позволяет находить элементы ввода по тексту заполнителя.
Использование
Например, рассмотрим следующую DOM-структуру.
<input type="email" placeholder="name@example.com" />
Найти поле ввода по тексту заполнителя и ввести в него значение можно так:
await page
.getByPlaceholder('name@example.com')
.fill('playwright@microsoft.com'); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Нужно ли искать точное совпадение: с учётом регистра и по всей строке. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
getByRole
Позволяет находить элементы по их роли 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 (необязательно)-
checkedboolean (необязательно)Атрибут, обычно задаваемый с помощью
aria-checkedили встроенных элементов управления<input type=checkbox>.Подробнее:
aria-checked. -
descriptionstring | RegExp (необязательно)Параметр для сопоставления с доступным описанием. По умолчанию сопоставление не учитывает регистр и выполняется по подстроке. Используйте exact, чтобы изменить это поведение.
Подробнее о доступном описании.
-
disabledboolean (необязательно)Атрибут, обычно задаваемый с помощью
aria-disabledилиdisabled.примечаниеВ отличие от большинства других атрибутов,
disabledнаследуется по иерархии DOM. Подробнее:aria-disabled. -
exactboolean (необязательно)Определяет, должны ли имя и описание совпадать точно: с учетом регистра и полностью. По умолчанию — false. Не учитывается, если значение является регулярным выражением. Обратите внимание: при точном сопоставлении пробелы всё равно обрезаются.
-
expandedboolean (необязательно)Атрибут, обычно задаваемый с помощью
aria-expanded.Подробнее:
aria-expanded. -
includeHiddenboolean (необязательно)Параметр, определяющий, будут ли сопоставляться скрытые элементы. По умолчанию селектор по роли находит только видимые элементы, как они определены в ARIA.
Подробнее:
aria-hidden. -
levelnumber (необязательно)Числовой атрибут, обычно присутствующий у ролей
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
Находит элемент по идентификатору теста.
Использование
Рассмотрим следующую структуру DOM.
<button data-testid="directions">Itinéraire</button>
Элемент можно найти по его идентификатору теста:
await page.getByTestId('directions').click(); Аргументы
Возвращает
Подробности
По умолчанию в качестве идентификатора теста используется атрибут data-testid. При необходимости используйте selectors.setTestIdAttribute(), чтобы настроить другой атрибут идентификатора теста.
// Set custom test id attribute from @playwright/test config:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
testIdAttribute: 'data-pw'
},
}); getByText
Позволяет находить элементы, содержащие заданный текст.
См. также locator.filter(), который позволяет сначала найти элементы по другому критерию, например доступной роли, а затем отфильтровать их по текстовому содержимому.
Использование
Рассмотрим следующую структуру DOM:
<div>Hello <span>world</span></div> <div>Hello</div>
Элемент можно найти по подстроке, точному совпадению или регулярному выражению:
// Matches <span>
page.getByText('world');
// Matches first <div>
page.getByText('Hello world');
// Matches second <div>
page.getByText('Hello', { exact: true });
// Matches both <div>s
page.getByText(/Hello/);
// Matches second <div>
page.getByText(/^hello$/i); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Определяет, искать ли точное совпадение: с учетом регистра и полностью. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
Подробности
При сопоставлении по тексту пробелы всегда нормализуются, даже при точном совпадении. Например, несколько пробелов заменяются одним, переносы строк — пробелами, а начальные и конечные пробелы игнорируются.
Элементы ввода типа button и submit сопоставляются по значению value, а не по текстовому содержимому. Например, поиск по тексту "Log in" находит <input type=button value="Log in">.
getByTitle
Позволяет находить элементы по атрибуту title.
Использование
Рассмотрим следующую структуру DOM.
<span title='Issues count'>25 issues</span>
После поиска по тексту заголовка можно проверить количество проблем:
await expect(page.getByTitle('Issues count')).toHaveText('25 issues'); Аргументы
-
Текст, по которому нужно найти элемент.
-
optionsObject (необязательно)-
exactboolean (необязательно)Определяет, искать ли точное совпадение: с учетом регистра и полностью. По умолчанию — false. Игнорируется при поиске по регулярному выражению. Обратите внимание: при точном совпадении пробелы всё равно обрезаются.
-
Возвращает
goto
Добавлен до v1.9Возвращает ответ на запрос основного ресурса. При нескольких перенаправлениях навигация завершится ответом последнего перенаправления.
Метод выдаст ошибку в следующих случаях:
- возникла ошибка SSL (например, при использовании самоподписанных сертификатов).
- целевой URL недействителен.
- во время навигации истёк тайм-аут.
- удалённый сервер не отвечает или недоступен.
- не удалось загрузить основной ресурс.
Метод не выдаст ошибку, если удалённый сервер вернул любой допустимый код состояния HTTP, включая 404 «Не найдено» и 500 «Внутренняя ошибка сервера». Код состояния такого ответа можно получить, вызвав response.status().
примечаниеМетод либо выдаёт ошибку, либо возвращает ответ на запрос основного ресурса. Исключение составляют переход к
about:blankили переход на тот же URL с другим хешем: они завершаются успешно и возвращаютnull.
примечаниеРежим без графического интерфейса не поддерживает переход к PDF-документу. См. исходную задачу.
Использование
await frame.goto(url); await frame.goto(url, options);
Аргументы
-
urlstringURL, на который нужно перейти во фрейме. URL должен включать схему, например
https://. -
optionsObject (необязательно)-
refererstring (необязательно)Значение заголовка Referer. Если оно указано, то будет иметь приоритет над значением заголовка referer, заданным с помощью page.setExtraHTTPHeaders().
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если селектор соответствует нескольким элементам, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
locator
Метод возвращает локатор элемента, с помощью которого можно выполнять действия на этой странице / во фрейме. Локатор разрешается в элемент непосредственно перед выполнением действия, поэтому серия действий с одним и тем же локатором фактически может выполняться над разными элементами DOM. Это происходит, если структура DOM изменилась между действиями.
Использование
frame.locator(selector); frame.locator(selector, options);
Аргументы
-
selectorstringСелектор, используемый для поиска элемента DOM.
-
optionsObject (необязательно)-
hasLocator (необязательно)Сужает результаты метода до тех, которые содержат элементы, соответствующие этому относительному локатору. Например,
article, в котором естьtext=Playwright, соответствует<article><div>Playwright</div></article>.Внутренний локатор должен быть относительным к внешнему; поиск начинается с соответствия внешнего локатора, а не с корня документа. Например, можно найти
content, в котором естьdiv, внутри<article><content><div>Playwright</div></content></article>. Однако поискcontent, в котором естьarticle div, завершится неудачей, поскольку внутренний локатор должен быть относительным и не должен использовать элементы за пределамиcontent.Обратите внимание: внешний и внутренний локаторы должны принадлежать одному фрейму. Внутренний локатор не должен содержать FrameLocator.
-
hasNotLocator (необязательно)Находит элементы, не содержащие элемент, соответствующий внутреннему локатору. Внутренний локатор применяется к внешнему. Например,
article, в котором нетdiv, соответствует<article><span>Playwright</span></article>.Обратите внимание: внешний и внутренний локаторы должны принадлежать одному фрейму. Внутренний локатор не должен содержать FrameLocator.
-
hasNotTextstring | RegExp (необязательно)Находит элементы, внутри которых нет указанного текста, в том числе в дочерних или вложенных элементах. Если передана строка string, сопоставление не учитывает регистр и выполняется по подстроке.
-
hasTextstring | RegExp (необязательно)Находит элементы, внутри которых содержится указанный текст, в том числе в дочерних или вложенных элементах. Если передана строка string, сопоставление не учитывает регистр и выполняется по подстроке. Например,
"Playwright"соответствует<article><div>Playwright</div></article>.
-
Возвращает
name
Добавлен до v1.9Возвращает атрибут name фрейма, заданный в теге.
Если атрибут 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);
Аргументы
-
htmlstringHTML-разметка для добавления на страницу.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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
Добавлено до версии 1.9Возвращает заголовок страницы.
Использование
await frame.title();
Возвращает
url
Добавлено до версии 1.9Возвращает URL фрейма.
Использование
frame.url();
Возвращает
waitForFunction
Добавлено до версии 1.9Возвращает значение, когда pageFunction возвращает истинное значение.
Использование
frame.waitForFunction() можно использовать для отслеживания изменения размера области просмотра:
const { firefox } = require('playwright'); // Or 'chromium' or '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 (необязательно)-
pollingnumber | "raf" (необязательно)Если значение polling равно
'raf', функция pageFunction постоянно выполняется в обратном вызовеrequestAnimationFrame. Если значение polling — число, оно интерпретируется как интервал в миллисекундах, через который будет выполняться функция. По умолчанию —raf. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время ожидания в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
waitForLoadState
Добавлено до версии 1.9Ожидает достижения требуемого состояния загрузки.
Метод возвращает управление, когда фрейм достигает требуемого состояния загрузки; по умолчанию — load. На момент вызова метода переход должен быть подтверждён. Если текущий документ уже достиг требуемого состояния, метод немедленно завершается.
примечаниеВ большинстве случаев этот метод не нужен, поскольку Playwright автоматически ожидает перед каждым действием.
Использование
await frame.click('button'); // Click triggers navigation.
await frame.waitForLoadState(); // Waits for 'load' state by default. Аргументы
-
state"load" | "domcontentloaded" | "networkidle" (необязательно)Необязательное состояние загрузки, которого нужно дождаться; по умолчанию —
load. Если состояние уже достигнуто во время загрузки текущего документа, метод немедленно завершается. Возможные значения:-
'load'— ждать наступления событияload. -
'domcontentloaded'— ждать наступления событияDOMContentLoaded. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ ждать, пока сетевые подключения отсутствуют не менее500мс. Не используйте этот метод для тестирования; вместо этого оценивайте готовность с помощью веб-проверок.
-
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
AbortSignal. Если сигнал прерван, ожидание будет отменено, а операция вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Максимальное время выполнения операции в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраnavigationTimeoutв конфигурации или методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().
-
Возвращает
waitForURL
Ожидает перехода фрейма по указанному URL.
Использование
await frame.click('a.delayed-navigation'); // Clicking the link will indirectly cause a navigation
await frame.waitForURL('**/target.html'); Аргументы
-
urlstring | RegExp | URLPattern | function(URL):booleanШаблон glob, регулярное выражение, шаблон URL или предикат, принимающий URL для сопоставления во время ожидания перехода. Обратите внимание: если параметр — строка без подстановочных знаков, метод будет ждать перехода на URL, в точности совпадающий с этой строкой.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
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'— считать операцию завершённой, когда получен сетевой ответ и началась загрузка документа.
-
-
Возвращает
Устаревшие методы
$
Не рекомендуетсяВместо этого используйте frame.locator(), основанный на локаторе. Подробнее о локаторах.
Возвращает ElementHandle, указывающий на элемент фрейма.
предупреждениеИспользование ElementHandle не рекомендуется; вместо этого используйте объекты Locator и веб-проверки.
Метод находит во фрейме элемент, соответствующий указанному селектору. Если совпадений нет, возвращает null.
Использование
await frame.$(selector); await frame.$(selector, options);
Аргументы
-
selectorstringСелектор для поиска.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов выдаёт исключение.
-
Возвращает
$$
Не рекомендуетсяВместо этого используйте frame.locator(), основанный на локаторе. Подробнее о локаторах.
Возвращает ElementHandle для элементов фрейма.
предупреждениеИспользование ElementHandle не рекомендуется; вместо этого используйте объекты Locator.
Метод находит во фрейме все элементы, соответствующие указанному селектору. Если совпадений нет, возвращает пустой массив.
Использование
await frame.$$(selector);
Аргументы
-
selectorstringСелектор для поиска.
Возвращает
$eval
Не рекомендуетсяЭтот метод не ожидает прохождения элементом проверок возможности взаимодействия, поэтому тесты могут быть нестабильными. Вместо этого используйте 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'); Аргументы
-
selectorstringСелектор для поиска.
-
pageFunctionfunction(Element) | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый в pageFunction.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов выдаёт исключение.
-
Возвращает
$$eval
Не рекомендуетсяВ большинстве случаев лучше подходят locator.evaluateAll(), другие вспомогательные методы Locator и веб-проверки.
Возвращает значение, возвращённое pageFunction.
Метод находит во фрейме все элементы, соответствующие указанному селектору, и передаёт массив найденных элементов первым аргументом в pageFunction.
Если pageFunction возвращает Promise, метод frame.$$eval() дождётся выполнения промиса и вернёт его значение.
Использование
const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10); Аргументы
-
selectorstringСелектор для поиска.
-
pageFunctionfunction(Array<Element>) | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый в pageFunction.
Возвращает
check
Добавлено до версии 1.9Не рекомендуетсяВместо этого используйте locator.check(), основанный на локаторе. Подробнее о локаторах.
Этот метод устанавливает флажок для элемента, соответствующего selector, выполняя следующие шаги:
- Находит элемент, соответствующий selector. Если такого элемента нет, ожидает появления соответствующего элемента в DOM.
- Убеждается, что найденный элемент — это флажок или переключатель. Если это не так, метод выдаёт ошибку. Если флажок уже установлен, метод немедленно возвращает управление.
- Ожидает прохождения найденным элементом проверок возможности взаимодействия, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие выполняется повторно.
- При необходимости прокручивает страницу, чтобы элемент оказался в области просмотра.
- Использует page.mouse, чтобы щёлкнуть по центру элемента.
- Убеждается, что флажок установлен. Если это не так, метод выдаёт ошибку.
Если выполнение всех шагов занимает больше времени, чем указано в параметре timeout, метод выдаёт ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Использование
await frame.check(selector); await frame.check(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если ему соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на поведение.
Этот параметр не влияет на поведение.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright элемент в область видимости перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано значение"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это удобно для проверки того, что пользователь может добраться до элемента без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выдаёт исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
click
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.click(), основанный на локаторе. Подробнее о локаторах.
Этот метод щёлкает по элементу, соответствующему селектору, выполняя следующие шаги:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
- Ожидает прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется, вся операция повторяется.
- При необходимости прокручивает страницу, чтобы элемент оказался в области видимости.
- Использует page.mouse, чтобы щёлкнуть по центру элемента или в указанной позиции.
- Ожидает успешного завершения или сбоя инициированной навигации, если не задан параметр noWaitAfter.
Если все шаги вместе не завершатся за указанное время тайм-аута, этот метод выдаст ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Использование
await frame.click(selector); await frame.click(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если ему соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
button"left" | "right" | "middle" (необязательно)По умолчанию —
left. -
clickCountnumber (необязательно)По умолчанию — 1. См. UIEvent.detail.
-
delaynumber (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию — 0. -
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиатуры, которые нужно нажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстанавливает исходное состояние модификаторов. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоВ будущем для этого параметра значением по умолчанию станет
true.Действия, инициирующие навигацию, ожидают её выполнения и начала загрузки страниц. От ожидания можно отказаться, установив этот флаг. Этот параметр нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию —
false. -
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright элемент в область видимости перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано значение"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это удобно для проверки того, что пользователь может добраться до элемента без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выдаёт исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиатураmodifiersбудет нажата независимо отtrial, чтобы можно было тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
dblclick
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.dblclick(), основанный на локаторе. Подробнее о локаторах.
Этот метод выполняет двойной щелчок по элементу, соответствующему селектору, выполняя следующие шаги:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
- Ожидает прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется, вся операция повторяется.
- При необходимости прокручивает страницу, чтобы элемент оказался в области видимости.
- Использует page.mouse, чтобы выполнить двойной щелчок по центру элемента или в указанной позиции. Если первый щелчок
dblclick()инициирует навигацию, этот метод выдаст ошибку.
Если все шаги вместе не завершатся за указанное время тайм-аута, этот метод выдаст ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Примечание
frame.dblclick()отправляет два событияclickи одно событиеdblclick.
Использование
await frame.dblclick(selector); await frame.dblclick(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если ему соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
button"left" | "right" | "middle" (необязательно)По умолчанию —
left. -
delaynumber (необязательно)Время ожидания между
mousedownиmouseupв миллисекундах. По умолчанию — 0. -
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы клавиатуры, которые нужно нажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, а затем восстанавливает исходное состояние модификаторов. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на поведение.
Этот параметр не влияет на поведение.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright элемент в область видимости перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано значение"none", Playwright не прокручивает элемент, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это удобно для проверки того, что пользователь может добраться до элемента без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выдаёт исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методов browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, этот метод выполняет только проверки возможности выполнения действия, не выполняя само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавиатураmodifiersбудет нажата независимо отtrial, чтобы можно было тестировать элементы, которые видны только при нажатии этих клавиш.
-
Возвращает
dispatchEvent
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.dispatchEvent(), основанный на локаторе. Подробнее о локаторах.
Приведённый ниже фрагмент отправляет событие click для элемента. Независимо от видимости элемента отправляется событие click. Это эквивалентно вызову element.click().
Использование
await frame.dispatchEvent('button#submit', 'click'); Внутри метод создаёт экземпляр события на основе указанного типа, инициализирует его свойствами 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 }); Аргументы
-
selectorstringСелектор для поиска элемента. Если ему соответствуют несколько элементов, будет использован первый.
-
typestringТип события DOM:
"click","dragstart"и т. д. -
eventInitEvaluationArgument (необязательно)Необязательные свойства инициализации, специфичные для события.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выдаёт исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
fill
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.fill(), основанный на локаторе. Подробнее о локаторах.
Этот метод ожидает появления элемента, соответствующего селектору, прохождения проверок возможности выполнения действия, переводит фокус на элемент, заполняет его и после заполнения отправляет событие input. Обратите внимание: чтобы очистить поле ввода, можно передать пустую строку.
Если целевой элемент не является элементом <input>, <textarea> или [contenteditable], этот метод выдаёт ошибку. Однако если элемент находится внутри элемента <label>, у которого есть связанный элемент управления, вместо него будет заполнен этот элемент управления.
Для отправки отдельных событий клавиатуры используйте locator.pressSequentially().
Использование
await frame.fill(selector, value); await frame.fill(selector, value, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
valuestringЗначение для заполнения элемента
<input>,<textarea>или[contenteditable]. -
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
focus
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.focus() на основе локатора. Подробнее о локаторах.
Этот метод находит элемент с помощью селектора и устанавливает на него фокус. Если элемент, соответствующий селектору, отсутствует, метод ожидает его появления в DOM.
Использование
await frame.focus(selector); await frame.focus(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
getAttribute
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.getAttribute() на основе локатора. Подробнее о локаторах.
Возвращает значение атрибута элемента.
Использование
await frame.getAttribute(selector, name); await frame.getAttribute(selector, name, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
namestringИмя атрибута, значение которого нужно получить.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
hover
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.hover() на основе локатора. Подробнее о локаторах.
Этот метод наводит указатель на элемент, соответствующий селектору, выполняя следующие шаги:
- Найти элемент, соответствующий селектору. Если такого элемента нет, дождаться его появления в DOM.
- Дождаться прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент будет отсоединён от DOM, действие будет повторено.
- При необходимости прокрутить страницу, чтобы элемент оказался в видимой области.
- Использовать page.mouse, чтобы навести указатель на центр элемента или на указанную позицию.
Если выполнение всех шагов не завершится за указанный тайм-аут, метод выбросит ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Использование
await frame.hover(selector); await frame.hover(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Клавиши-модификаторы, которые нужно нажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, после чего восстанавливает исходное состояние. Если параметр не указан, используются уже нажатые модификаторы. "ControlOrMeta" соответствует "Control" в Windows и Linux и "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не имеет эффекта.
Этот параметр не имеет эффекта.
-
positionObject (необязательно)Точка относительно верхнего левого угла внутренней области элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в видимой области перед выполнением действия. По умолчанию —
"auto": элемент прокручивается при необходимости, включая прокрутку вложенных прокручиваемых контейнеров. Если задано значение"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, метод выполняет только проверки возможности выполнения действия, пропуская само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавишиmodifiersбудут нажаты независимо отtrial, что позволяет тестировать элементы, видимые только при нажатии этих клавиш.
-
Возвращает
innerHTML
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.innerHTML() на основе локатора. Подробнее о локаторах.
Возвращает element.innerHTML.
Использование
await frame.innerHTML(selector); await frame.innerHTML(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
innerText
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.innerText() на основе локатора. Подробнее о локаторах.
Возвращает element.innerText.
Использование
await frame.innerText(selector); await frame.innerText(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
inputValue
Не рекомендуетсяВместо этого используйте locator.inputValue() на основе локатора. Подробнее о локаторах.
Возвращает input.value для выбранного элемента <input>, <textarea> или <select>.
Для элементов, не являющихся полями ввода, выбрасывается ошибка. Однако если элемент находится внутри элемента <label>, связанного с элементом управления, возвращается значение этого элемента управления.
Использование
await frame.inputValue(selector); await frame.inputValue(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал прерван, операция будет отменена и будет выброшена ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов выбрасывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0, то есть без тайм-аута. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
isChecked
Добавлено до v1.9Не рекомендуетсяВместо этого используйте locator.isChecked() на основе локатора. Подробнее о локаторах.
Возвращает, отмечен ли элемент. Выбрасывает ошибку, если элемент не является флажком или переключателем.
Использование
await frame.isChecked(selector); await frame.isChecked(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout().
-
Возвращает
isDisabled
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод на основе локатора locator.isDisabled(). Подробнее см. в разделе локаторы.
Возвращает, отключён ли элемент; противоположное состояние описано в разделе доступен.
Использование
await frame.isDisabled(selector); await frame.isDisabled(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout().
-
Возвращает
isEditable
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод на основе локатора locator.isEditable(). Подробнее см. в разделе локаторы.
Возвращает, является ли элемент редактируемым.
Использование
await frame.isEditable(selector); await frame.isEditable(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout().
-
Возвращает
isHidden
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод на основе локатора locator.isHidden(). Подробнее см. в разделе локаторы.
Возвращает, скрыт ли элемент; противоположное состояние описано в разделе видимый. Элемент, соответствующий селектору, но отсутствующий на странице, считается скрытым.
Использование
await frame.isHidden(selector); await frame.isHidden(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)УстарелоЭтот параметр игнорируется. frame.isHidden() не ждёт, пока элемент станет скрытым, и сразу возвращает результат.
-
Возвращает
isVisible
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод на основе локатора locator.isVisible(). Подробнее см. в разделе локаторы.
Возвращает, является ли элемент видимым. Элемент, соответствующий селектору, но отсутствующий на странице, считается невидимым.
Использование
await frame.isVisible(selector); await frame.isVisible(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)УстарелоЭтот параметр игнорируется. 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);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
keystringНазвание клавиши, которую нужно нажать, или символ для ввода, например
ArrowLeftилиa. -
optionsObject (необязательно)-
delaynumber (необязательно)Время ожидания между
keydownиkeyupв миллисекундах. По умолчанию — 0. -
noWaitAfterboolean (необязательно)УстарелоВ будущем значение этого параметра по умолчанию будет
true.Действия, запускающие переходы, ожидают выполнения этих переходов и начала загрузки страниц. Чтобы отключить ожидание, установите этот флаг. Этот параметр нужен только в исключительных случаях, например при переходе на недоступные страницы. По умолчанию —
false. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout().
-
Возвращает
selectOption
Добавлено до v1.9Не рекомендуетсяВместо этого используйте метод на основе локатора locator.selectOption(). Подробнее см. в разделе локаторы.
Этот метод ожидает появления элемента, соответствующего селектору, прохождения проверок готовности к действию, а также появления всех указанных параметров в элементе <select>, после чего выбирает эти параметры.
Если целевой элемент не является элементом <select>, метод вызывает ошибку. Однако если элемент находится внутри элемента <label>, связанного с элементом управления, вместо него будет использован этот элемент управления.
Возвращает массив значений успешно выбранных параметров.
После выбора всех переданных параметров вызываются события change и input.
Использование
// Single selection matching the value or label
frame.selectOption('select#colors', 'blue');
// single selection matching both the value and the label
frame.selectOption('select#colors', { label: 'Blue' });
// multiple selection
frame.selectOption('select#colors', 'red', 'green', 'blue'); Аргументы
-
selectorstringСелектор для поиска.
-
valuesnull | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>-
valuestring (необязательно)Сопоставление по
option.value. Необязательно. -
labelstring (необязательно)Сопоставление по
option.label. Необязательно. -
indexnumber (необязательно)Сопоставление по индексу. Необязательно.
Параметры для выбора. Если у элемента
<select>есть атрибутmultiple, выбираются все подходящие параметры; в противном случае выбирается только первый параметр, соответствующий одному из переданных вариантов. Строковые значения сопоставляются как со значениями, так и с метками. Параметр считается подходящим, если совпадают все указанные свойства. -
-
optionsObject (необязательно)-
forceboolean (необязательно)Нужно ли пропустить проверки готовности к действию. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если задано значение true, вызов требует, чтобы селектор соответствовал одному элементу. Если заданный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() либо page.setDefaultTimeout().
-
Возвращает
setChecked
Не рекомендуетсяВместо этого используйте метод на основе локатора locator.setChecked(). Подробнее см. в разделе локаторы.
Этот метод устанавливает или снимает флажок элемента, соответствующего селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает появления соответствующего элемента в DOM.
- Проверяет, что найденный элемент — флажок или переключатель. Если это не так, метод вызывает ошибку.
- Если элемент уже имеет нужное состояние, метод сразу возвращает результат.
- Ожидает прохождения проверок готовности к действию для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие выполняется повторно.
- При необходимости прокручивает страницу до элемента.
- Использует page.mouse, чтобы щёлкнуть по центру элемента.
- Проверяет, что теперь элемент отмечен или не отмечен. Если это не так, метод вызывает ошибку.
Если все действия в совокупности не завершились за указанный период timeout, метод вызывает ошибку TimeoutError. Передача нулевого значения отключает тайм-аут.
Использование
await frame.setChecked(selector, checked); await frame.setChecked(selector, checked, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
checkedbooleanСледует ли установить или снять флажок.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области просмотра перед выполнением действия. По умолчанию используется
"auto": элемент прокручивается в область просмотра при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция отменится и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, этот метод выполняет только проверки возможности выполнения действия, пропуская само действие. По умолчанию
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
setInputFiles
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.setInputFiles(), работающий с локаторами. Подробнее о локаторах.
Задает для поля ввода файла указанные пути к файлам или файлы. Если некоторые из filePaths являются относительными путями, они разрешаются относительно текущего рабочего каталога. Если передан пустой массив, выбранные файлы очищаются.
Этот метод ожидает, что селектор указывает на элемент input. Однако, если элемент находится внутри элемента <label>, связанного с элементом управления, вместо него выбирается элемент управления.
Использование
await frame.setInputFiles(selector, files); await frame.setInputFiles(selector, files, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция отменится и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
tap
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.tap(), работающий с локаторами. Подробнее о локаторах.
Этот метод нажимает на элемент, соответствующий селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
- Ожидает успешного прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие выполняется повторно.
- При необходимости прокручивает страницу, чтобы элемент оказался в области просмотра.
- С помощью page.touchscreen нажимает на центр элемента или на указанную позицию.
Если все действия не будут выполнены за указанный период тайм-аута, метод вызовет ошибку TimeoutError. Передача нулевого тайм-аута отключает его.
ПримечаниеДля
frame.tap()требуется, чтобы для параметраhasTouchконтекста браузера было задано значение true.
Использование
await frame.tap(selector); await frame.tap(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Следует ли пропустить проверки возможности выполнения действия. По умолчанию
false. -
modifiersArray<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)Модификаторы, которые нужно нажать. Гарантирует, что во время операции будут нажаты только эти модификаторы, после чего восстанавливает их исходное состояние. Если параметр не указан, используются модификаторы, нажатые в данный момент. "ControlOrMeta" преобразуется в "Control" в Windows и Linux и в "Meta" в macOS.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
positionObject (необязательно)Точка относительно верхнего левого угла области внутренних отступов элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области просмотра перед выполнением действия. По умолчанию используется
"auto": элемент прокручивается в область просмотра при необходимости, в том числе прокручиваются вложенные прокручиваемые контейнеры. Если задано"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция отменится и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout(). -
trialboolean (необязательно)Если параметр задан, этот метод выполняет только проверки возможности выполнения действия, пропуская само действие. По умолчанию
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его. Обратите внимание: клавишиmodifiersнажимаются независимо отtrial, чтобы можно было тестировать элементы, видимые только при нажатых клавишах.
-
Возвращает
textContent
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.textContent(), работающий с локаторами. Подробнее о локаторах.
Возвращает element.textContent.
Использование
await frame.textContent(selector); await frame.textContent(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция отменится и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
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().
Использование
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
textstringТекст, который нужно ввести в элемент, находящийся в фокусе.
-
optionsObject (необязательно)-
delaynumber (необязательно)Время ожидания между нажатиями клавиш в миллисекундах. По умолчанию — 0.
-
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не оказывает никакого эффекта.
Этот параметр не оказывает никакого эффекта.
-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал будет прерван, операция отменится и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, селектор должен соответствовать одному элементу. Если указанный селектор соответствует более чем одному элементу, вызов вызовет исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию
0— тайм-аут отсутствует. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации либо методами browserContext.setDefaultTimeout() или page.setDefaultTimeout().
-
Возвращает
uncheck
Добавлен до v1.9Не рекомендуетсяВместо этого используйте locator.uncheck(), работающий с локаторами. Подробнее о локаторах.
Этот метод снимает флажок элемента, соответствующего селектору, выполняя следующие действия:
- Находит элемент, соответствующий селектору. Если такого элемента нет, ожидает его появления в DOM.
- Проверяет, что найденный элемент является флажком или переключателем. В противном случае метод вызывает ошибку. Если флажок уже снят, метод сразу возвращает результат.
- Ожидает успешного прохождения проверок возможности выполнения действия для найденного элемента, если не задан параметр force. Если во время проверок элемент отсоединяется от DOM, действие выполняется повторно.
- При необходимости прокручивает страницу, чтобы элемент оказался в области просмотра.
- С помощью page.mouse нажимает на центр элемента.
- Проверяет, что флажок снят. В противном случае метод вызывает ошибку.
Если все действия не будут выполнены за указанный период тайм-аута, метод вызовет ошибку TimeoutError. Передача нулевого тайм-аута отключает его.
Использование
await frame.uncheck(selector); await frame.uncheck(selector, options);
Аргументы
-
selectorstringСелектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый.
-
optionsObject (необязательно)-
forceboolean (необязательно)Определяет, нужно ли пропустить проверки возможности выполнения действия. По умолчанию —
false. -
noWaitAfterboolean (необязательно)УстарелоЭтот параметр не влияет на результат.
Этот параметр не влияет на результат.
-
positionObject (необязательно)Точка относительно верхнего левого угла внутренней области элемента. Если не указана, используется видимая точка элемента.
-
scroll"auto" | "none" (необязательно)Определяет, прокручивает ли Playwright страницу так, чтобы элемент оказался в области видимости, перед выполнением действия. По умолчанию —
"auto": элемент прокручивается в область видимости при необходимости, в том числе во вложенных прокручиваемых контейнерах. Если задано значение"none", Playwright не прокручивает страницу, и действие завершается ошибкой, если элемент уже не находится в области просмотра. Это полезно, чтобы проверить, доступен ли элемент пользователю без дополнительной прокрутки. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет отменена и возникнет ошибка. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
strictboolean (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout(). -
trialboolean (необязательно)Если задано, этот метод выполняет только проверки возможности выполнения действия и пропускает само действие. По умолчанию —
false. Полезно, чтобы дождаться готовности элемента к действию, не выполняя его.
-
Возвращает
waitForNavigation
Добавлен до v1.9УстарелоЭтот метод по своей сути подвержен гонкам состояний; вместо него используйте frame.waitForURL().
Ожидает навигации фрейма и возвращает ответ на запрос основного ресурса. В случае нескольких перенаправлений навигация завершится ответом последнего перенаправления. При переходе к другому якорю или навигации в результате использования History API навигация завершится значением null.
Использование
Этот метод ожидает перехода фрейма на новый URL. Он полезен, если вы запускаете код, который косвенно вызывает навигацию фрейма. Рассмотрим следующий пример:
// Start waiting for navigation before clicking. Note no await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise; примечаниеИзменение URL с помощью History API считается навигацией.
Аргументы
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить ожидание с помощью
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, в точности совпадающий с этой строкой.
-
waitUntil"load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)Когда считать операцию успешно завершённой; по умолчанию —
load. Возможны следующие события:-
'domcontentloaded'— считать операцию завершённой при срабатывании событияDOMContentLoaded. -
'load'— считать операцию завершённой при срабатывании событияload. -
'networkidle'— НЕ РЕКОМЕНДУЕТСЯ считать операцию завершённой, если сетевые подключения отсутствуют не менее500мс. Не используйте этот метод для тестирования; вместо этого проверяйте готовность с помощью веб-проверок. -
'commit'— считать операцию завершённой после получения ответа сети и начала загрузки документа.
-
-
Возвращает
waitForSelector
Добавлен до v1.9Не рекомендуетсяИспользуйте веб-проверки видимости или метод locator.waitFor() для работы с локатором. Подробнее о локаторах.
Возвращает результат, когда элемент, указанный селектором, соответствует параметру state. При ожидании null или hidden возвращает detached.
примечаниеPlaywright автоматически ожидает готовности элемента перед выполнением действия. Использование объектов Locator и веб-проверок с приоритетом веба позволяет писать код без ожидания селектора.
Ожидает, пока селектор не будет соответствовать параметру state (элемент появится в DOM или исчезнет из него либо станет видимым или скрытым). Если на момент вызова метода селектор уже соответствует условию, метод немедленно вернёт результат. Если селектор не будет соответствовать условию в течение указанного времени timeout, функция вызовет ошибку.
Использование
Этот метод работает при переходах между страницами:
const { chromium } = require('playwright'); // Or 'firefox' or '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();
})(); Аргументы
-
selectorstringСелектор для поиска.
-
optionsObject (необязательно)-
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
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 (необязательно)Если значение равно true, вызов требует, чтобы селектор соответствовал одному элементу. Если указанный селектор соответствует нескольким элементам, вызов вызывает исключение.
-
timeoutnumber (необязательно)Максимальное время в миллисекундах. По умолчанию —
0(без тайм-аута). Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
waitForTimeout
Добавлен до v1.9Не рекомендуетсяНе используйте ожидание тайм-аута в рабочем коде. Тесты, ожидающие заданное время, по своей сути нестабильны. Используйте действия Locator и веб-проверки, которые выполняют ожидание автоматически.
Ожидает указанное значение timeout в миллисекундах.
Обратите внимание: frame.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в рабочем коде, будут нестабильны. Вместо этого используйте такие сигналы, как сетевые события, появление селекторов и другие.
Использование
await frame.waitForTimeout(timeout);
Аргументы
-
timeoutnumberВремя ожидания
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-frame