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

Frame

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

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

  • page.on('frameattached') - срабатывает, когда фрейм присоединяется к странице. Фрейм может быть присоединен к странице только один раз.
  • page.on('framenavigated') - срабатывает, когда фрейм совершает навигацию на другой URL.
  • page.on('framedetached') - срабатывает, когда фрейм отсоединяется от страницы. Фрейм может быть отсоединен от страницы только один раз.

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

const { firefox } = require('playwright'); // Или 'chromium' или 'webkit'.

(async () => {
const browser = await firefox.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/chrome/browser/canary.html');
dumpFrameTree(page.mainFrame(), '');
await browser.close();

function dumpFrameTree(frame, indent) {
console.log(indent + frame.url());
for (const child of frame.childFrames())
dumpFrameTree(child, indent + ' ');
}
})();

Методы​

addScriptTag​

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

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

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

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

await frame.addScriptTag();
await frame.addScriptTag(options);

Аргументы

  • options Object (опционально)
    • content string (опционально)#

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

    • path string (опционально)#

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

    • type string (опционально)#

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

    • url string (опционально)#

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

Возвращает


addStyleTag​

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

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

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

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

await frame.addStyleTag();
await frame.addStyleTag(options);

Аргументы

  • options Object (опционально)
    • content string (опционально)#

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

    • path string (опционально)#

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

    • url string (опционально)#

      URL тега <link>.

Возвращает


childFrames​

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

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

frame.childFrames();

Возвращает


content​

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

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

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

await frame.content();
await frame.content(options);

Аргументы

  • options Object (необязательно)
    • includeShadow boolean (необязательно) Добавлено в: v1.64#

      Если установлено значение true, содержимое открытых теневых корней включается в виде декларативного теневого DOM, то есть элементов <template shadowrootmode="open">, вложенных в соответствующие элементы-хозяева. Закрытые теневые корни никогда не включаются. По умолчанию — false.

Возвращает


dragAndDrop​

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

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

await frame.dragAndDrop(source, target);
await frame.dragAndDrop(source, target, options);

Аргументы

  • source string#

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

  • target string#

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

  • options Object (опционально)

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

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

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

      Устарело

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

Этот параметр не оказывает никакого влияния.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется значение "auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе с прокруткой вложенных прокручиваемых контейнеров. При значении "none" Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшено исключение. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • steps number (опционально) Добавлено в: v1.57#

    По умолчанию 1. Отправляет n интерполированных событий mousemove, чтобы смоделировать перемещение между mousedown и mouseup при перетаскивании. Если установить 1, будет сгенерировано одно событие mousemove в точке назначения.

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

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

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


evaluate​

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

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

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

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

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

const result = await frame.evaluate(([x, y]) => {
return Promise.resolve(x * y);
}, [7, 8]);
console.log(result); // выводит "56"

Вместо функции также можно передать строку.

console.log(await frame.evaluate('1 + 2')); // выводит "3"

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

const bodyHandle = await frame.evaluateHandle('document.body');
const html = await frame.evaluate(([body, suffix]) =>
body.innerHTML + suffix, [bodyHandle, 'hello'],
);
await bodyHandle.dispose();

Аргументы

  • pageFunction function | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

  • options Object (необязательно)
    • exposeFunctions boolean (необязательно) Добавлено в: v1.62#

      Если установлено значение true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значение false: в этом случае функции не поддаются сериализации, и попытка передать функцию приводит к ошибке.

Возвращает


evaluateHandle​

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

Возвращает значение, возвращаемое pageFunction в виде JSHandle.

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

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

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

// Обработчик для объекта window
const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));

Вместо функции также можно передать строку.

const aHandle = await frame.evaluateHandle('document'); // Обработчик для 'document'.

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

const aHandle = await frame.evaluateHandle(() => document.body);
const resultHandle = await frame.evaluateHandle(([body, suffix]) =>
body.innerHTML + suffix, [aHandle, 'hello'],
);
console.log(await resultHandle.jsonValue());
await resultHandle.dispose();

Аргументы

  • pageFunction function | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

  • options Object (необязательно)
    • exposeFunctions boolean (необязательно) Добавлено в: v1.62#

      Если установлено значение true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Под капотом каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значение false: в этом случае функции не подлежат сериализации, и попытка передать функцию приводит к ошибке.

Возвращает


frameElement​

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

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

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

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

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

const frameElement = await frame.frameElement();
const contentFrame = await frameElement.contentFrame();
console.log(frame === contentFrame); // -> true

Возвращает


frameLocator​

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

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

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

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

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

const locator = frame.frameLocator('#my-iframe').getByText('Submit');
await locator.click();

Следующий фрагмент кода находит кнопку либо в текущем фрейме, либо в одном из вложенных в него iframe:

const locator = frame.frameLocator().getByRole('button');
await locator.click();

Аргументы

  • selector string (необязательный)#

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

Возвращает


getByAltText​

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

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

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

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

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

Аргументы

  • text string | RegExp#

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

  • options Object (опционально)

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

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

Возвращает


getByLabel​

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

Позволяет находить элементы ввода по тексту связанного элемента <label> или aria-labelledby, или по атрибуту aria-label.

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

Например, этот метод найдет поля ввода по меткам "Username" и "Password" в следующем DOM:

<input aria-label="Username">
<label for="password-input">Password:</label>
<input id="password-input">
await page.getByLabel('Username').fill('john');
await page.getByLabel('Password').fill('secret');

Аргументы

  • text string | RegExp#

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

  • options Object (опционально)

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

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

Возвращает


getByPlaceholder​

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

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

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

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

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

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

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

Аргументы

  • text string | RegExp#

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

  • options Object (опционально)

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

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

Возвращает


getByRole​

Добавлено в: v1.27 frame.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 роль.

  • options Object (опционально)

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

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

Подробнее об aria-checked.

  • description string | RegExp (необязательно) Добавлено в: v1.60#

    Параметр для сопоставления с доступным описанием. По умолчанию сопоставление выполняется без учёта регистра и ищет подстроку; используйте exact для управления этим поведением.

    Подробнее о доступном описании.

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

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

    примечание

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

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

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

  • expanded boolean (необязательный)#

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

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

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

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

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

  • level number (опционально)#

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

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

  • name string | RegExp (опционально)#

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

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

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

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

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

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

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

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

Возвращает

Детали

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

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


getByTestId​

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

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

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

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

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

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

await page.getByTestId('directions').click();

Аргументы

  • testId string | RegExp#

    Идентификатор для поиска элемента.

Возвращает

Детали

По умолчанию атрибут data-testid используется в качестве тестового идентификатора. Используйте selectors.setTestIdAttribute(), чтобы настроить другой атрибут тестового идентификатора, если это необходимо.

// Установите пользовательский атрибут тестового идентификатора из конфигурации @playwright/test:
import { defineConfig } from '@playwright/test';

export default defineConfig({
use: {
testIdAttribute: 'data-pw'
},
});

getByText​

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

Позволяет находить элементы, содержащие заданный текст.

Смотрите также locator.filter(), который позволяет сопоставлять по другим критериям, таким как доступная роль, а затем фильтровать по содержимому текста.

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

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

<div>Hello <span>world</span></div>
<div>Hello</div>

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

// Соответствует <span>
page.getByText('world');

// Соответствует первому <div>
page.getByText('Hello world');

// Соответствует второму <div>
page.getByText('Hello', { exact: true });

// Соответствует обоим <div>
page.getByText(/Hello/);

// Соответствует второму <div>
page.getByText(/^hello$/i);

Аргументы

  • text string | RegExp#

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

  • options Object (опционально)

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

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

Возвращает

Детали

Сопоставление по тексту всегда нормализует пробелы, даже при точном совпадении. Например, оно превращает несколько пробелов в один, превращает разрывы строк в пробелы и игнорирует начальные и конечные пробелы.

Элементы ввода типа button и submit сопоставляются по их value, а не по содержимому текста. Например, поиск по тексту "Log in" соответствует <input type=button value="Log in">.


getByTitle​

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

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

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

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

<span title='Issues count'>25 issues</span>

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

await expect(page.getByTitle('Issues count')).toHaveText('25 issues');

Аргументы

  • text string | RegExp#

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

  • options Object (опционально)

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

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

Возвращает


goto​

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

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

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

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

Метод не вызовет ошибку, если удаленный сервер вернет любой действительный код состояния HTTP, включая 404 "Не найдено" и 500 "Внутренняя ошибка сервера". Код состояния для таких ответов можно получить, вызвав response.status().

примечание

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

примечание

Режим без головы не поддерживает навигацию к PDF-документу. См. проблему в исходном коде.

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

await frame.goto(url);
await frame.goto(url, options);

Аргументы

  • url string#

    URL для навигации фрейма. URL должен включать схему, например, https://.

  • options Object (опционально)

    • referer string (опционально)#

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

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

  • timeout number (необязательно)#

    Максимальное время операции в миллисекундах. По умолчанию 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 frame.isDetached

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

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

frame.isDetached();

Возвращает


isEnabled​

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

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

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

await frame.isEnabled(selector);
await frame.isEnabled(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


locator​

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

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

Узнайте больше о локаторах.

Узнайте больше о локаторах.

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

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

Аргументы

  • selector string#

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

  • options Object (опционально)

    • has Locator (опционально)#

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

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

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

    • hasNot Locator (опционально) Добавлено в: v1.33#

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

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

    • hasNotText string | RegExp (опционально) Добавлено в: v1.33#

      Соответствует элементам, которые не содержат указанный текст где-либо внутри, возможно, в дочернем или потомке элемента. При передаче string сопоставление нечувствительно к регистру и ищет подстроку.

    • hasText string | RegExp (опционально)#

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

Возвращает


name​

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

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

Если имя пустое, возвращает атрибут id.

примечание

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

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

frame.name();

Возвращает


page​

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

Возвращает страницу, содержащую этот фрейм.

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

frame.page();

Возвращает


parentFrame​

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

Родительский фрейм, если он есть. Открепленные фреймы и главные фреймы возвращают null.

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

frame.parentFrame();

Возвращает


setContent​

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

Этот метод внутренне вызывает document.write(), наследуя все его специфические характеристики и поведение.

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

await frame.setContent(html);
await frame.setContent(html, options);

Аргументы

HTML-разметка, которую нужно задать для страницы.

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • timeout number (необязательно)#

      Максимальное время операции в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить через опцию navigationTimeout в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#

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

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

Возвращает


title​

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

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

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

await frame.title();

Возвращает


url​

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

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

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

frame.url();

Возвращает


waitForFunction​

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

Возвращает, когда pageFunction возвращает истинное значение, возвращает это значение.

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

frame.waitForFunction() может быть использован для наблюдения за изменением размера области просмотра:

const { firefox } = require('playwright'); // Или 'chromium' или 'webkit'.

(async () => {
const browser = await firefox.launch();
const page = await browser.newPage();
const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
await page.setViewportSize({ width: 50, height: 50 });
await watchDog;
await browser.close();
})();

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

const selector = '.foo';
await frame.waitForFunction(selector => !!document.querySelector(selector), selector);

Аргументы

  • pageFunction function | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

  • options Object (опционально)

    • polling number | "raf" (опционально)#

Если polling имеет значение 'raf', то pageFunction постоянно выполняется в функции обратного вызова requestAnimationFrame. Если polling — число, оно интерпретируется как интервал в миллисекундах, с которым будет выполняться функция. По умолчанию используется raf.

  • signal AbortSignal (необязательный) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

  • timeout number (необязательный)#

    Максимальное время ожидания в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


waitForLoadState​

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

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

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

примечание

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

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

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

Аргументы

  • state "load" | "domcontentloaded" | "networkidle" (опционально)#

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

  • 'load' - ожидать наступления события load.
  • 'domcontentloaded' - ожидать наступления события DOMContentLoaded.
  • 'networkidle' - НЕ РЕКОМЕНДУЕТСЯ ожидать отсутствия сетевых соединений в течение как минимум 500 мс. Не используйте этот метод в тестах; вместо этого полагайтесь на веб-утверждения для проверки готовности.
  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить ожидание с помощью AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • timeout number (необязательно)#

      Максимальное время операции в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции navigationTimeout в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().

Возвращает


waitForURL​

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

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

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

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

Аргументы

  • url string | RegExp | URLPattern | function(URL):boolean#

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

  • options Object (необязательно)

    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить ожидание с помощью AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция выбросит ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • timeout number (необязательно)#

      Максимальное время операции в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции navigationTimeout в конфигурации или с помощью методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (опционально)#

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

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

Возвращает


Свойства​

webmcp​

Добавлено в: v1.64 frame.webmcp

Инструменты, которые фрейм регистрирует через экспериментальный браузерный API WebMCP. Подробности см. в разделе WebMCP.

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

frame.webmcp

Тип


Устаревшие элементы​

$​

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

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

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

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

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

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

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

await frame.$(selector);
await frame.$(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

Возвращает


$$​

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

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

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

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

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

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

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

await frame.$$(selector);

Аргументы

  • selector string#

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

Возвращает


$eval​

Добавлено в: v1.9 frame.$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');

Аргументы

  • selector string#

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

  • pageFunction function(Element) | string#

    Функция для выполнения в контексте страницы.

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

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

  • options Object (опционально)

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

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

Возвращает


$$eval​

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

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

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

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

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

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

const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);

Аргументы

  • selector string#

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

  • pageFunction function(Array<Element>) | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

Возвращает


check​

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

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

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

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

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

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

await frame.check(selector);
await frame.check(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

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

      Устарело

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

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

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

Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется "auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. Если установлено значение "none", Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области видимости. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


click​

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

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

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

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

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

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

await frame.click(selector);
await frame.click(selector, options);

Аргументы

  • selector string# Селектор для поиска элемента. Если селектору соответствуют несколько элементов, будет использован первый из них.
  • options Object (необязательно)
    • button "left" | "right" | "middle" (необязательно)#

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

    • clickCount number (необязательно)#

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

    • delay number (необязательно)#

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

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

      Определяет, следует ли пропускать проверки готовности к действию. По умолчанию — false.

    • modifiers Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)#

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

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

      Устарело

      В будущем значением этого параметра по умолчанию станет true.

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

    • position Object (необязательно)#

      Точка, заданная относительно левого верхнего угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.

    • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

      Определяет, прокручивает ли Playwright страницу до появления элемента в области просмотра перед выполнением действия. По умолчанию — "auto": при необходимости выполняется прокрутка до элемента, включая прокрутку вложенных прокручиваемых контейнеров. При значении "none" Playwright не выполняет прокрутку до элемента, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выдачей ошибки. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (необязательно)#

      Максимальное время ожидания в миллисекундах. По умолчанию — 0, то есть без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


dblclick​

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

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

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

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

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

примечание

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

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

await frame.dblclick(selector);
await frame.dblclick(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

    • button "left" | "right" | "middle" (опционально)#

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

    • delay number (опционально)#

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

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

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

    • modifiers Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#

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

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

      Устарело

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

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

    • position Object (опционально)#

Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, прокручивает ли Playwright страницу, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется "auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении "none" Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


dispatchEvent​

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

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

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

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

await frame.dispatchEvent('button#submit', 'click');

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

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

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

// Note you can only create DataTransfer in Chromium and Firefox
const dataTransfer = await frame.evaluateHandle(() => new DataTransfer());
await frame.dispatchEvent('#source', 'dragstart', { dataTransfer });

Аргументы

  • selector string#

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

  • type string#

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

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

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 — без тайм-аута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или используя методы browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


fill​

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

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

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

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

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

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

await frame.fill(selector, value);
await frame.fill(selector, value, options);

Аргументы

  • selector string#

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

  • value string#

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

  • options Object (опционально)

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

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

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

      Устарело

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

Этот параметр не оказывает никакого влияния.

  • signal AbortSignal (необязательный) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


focus​

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

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

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

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

await frame.focus(selector);
await frame.focus(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


getAttribute​

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

Вместо этого используйте вариант на основе локаторов — locator.getAttribute(). Подробнее читайте о локаторах.

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

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

await frame.getAttribute(selector, name);
await frame.getAttribute(selector, name, options);

Аргументы

  • selector string#

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

  • name string#

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить через опцию actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


hover​

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

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

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

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

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

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

await frame.hover(selector);
await frame.hover(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

    • modifiers Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#

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

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

      Устарело

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

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

    • position Object (опционально)#

Точка относительно левого верхнего угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, прокручивает ли Playwright страницу или контейнеры, чтобы сделать элемент видимым перед выполнением действия. По умолчанию используется "auto": при необходимости выполняется прокрутка, в том числе вложенных прокручиваемых контейнеров, чтобы элемент оказался в области просмотра. Если задано "none", Playwright не выполняет прокрутку к элементу, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить через опцию actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


innerHTML​

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

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

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

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

await frame.innerHTML(selector);
await frame.innerHTML(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить через опцию actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout() methods.

Возвращает


innerText​

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

Вместо этого используйте вариант на основе локаторов — locator.innerText(). Подробнее читайте о локаторах.

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

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

await frame.innerText(selector);
await frame.innerText(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и выбросит ошибку. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


inputValue​

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

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

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

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

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

await frame.inputValue(selector);
await frame.inputValue(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


isChecked​

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

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

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

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

await frame.isChecked(selector);
await frame.isChecked(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


isDisabled​

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

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

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

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

await frame.isDisabled(selector);
await frame.isDisabled(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


isEditable​

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

Вместо этого используйте вариант на основе локаторов — locator.isEditable(). Подробнее читайте о локаторах.

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

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

await frame.isEditable(selector);
await frame.isEditable(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


isHidden​

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

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

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

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

await frame.isHidden(selector);
await frame.isHidden(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

    • timeout number (опционально)#

      Устарело

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

Возвращает


isVisible​

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

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

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

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

await frame.isVisible(selector);
await frame.isVisible(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

    • timeout number (опционально)#

      Устарело

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

Возвращает


press​

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

Используйте основанный на локаторах 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);

Аргументы

  • selector string#

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

  • key string#

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

  • options Object (опционально)

    • delay number (опционально)#

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

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

      Устарело

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

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

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

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

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


selectOption​

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

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

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

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

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

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

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

// Одиночный выбор, соответствующий значению или метке
frame.selectOption('select#colors', 'blue');

// одиночный выбор, соответствующий как значению, так и метке
frame.selectOption('select#colors', { label: 'Blue' });

// выбор нескольких значений
frame.selectOption('select#colors', ['red', 'green', 'blue']);

Аргументы

  • selector string#

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

  • values null | string | ElementHandle | Array<string> | Object | Array<ElementHandle> | Array<Object>#

    • value string (опционально)

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

    • label string (опционально)

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

    • index number (опционально)

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

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

  • options Object (опционально)

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

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

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

      Устарело

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

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

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

Этот параметр не оказывает никакого влияния.

  • signal AbortSignal (необязательный) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


setChecked​

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

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

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

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

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

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

await frame.setChecked(selector, checked);
await frame.setChecked(selector, checked, options);

Аргументы

  • selector string#

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

  • checked boolean#

    Указывает, следует ли установить или снять флажок.

  • options Object (опционально)

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

      Указывает, следует ли обходить проверки actionability. По умолчанию false.

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

      Устарело

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

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

    • position Object (опционально)#

Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется одна из видимых точек элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области просмотра, перед выполнением действия. По умолчанию используется значение "auto", при котором элемент при необходимости прокручивается в область просмотра, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении "none" Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


setInputFiles​

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

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

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

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

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

await frame.setInputFiles(selector, files);
await frame.setInputFiles(selector, files, options);

Аргументы

  • selector string#

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

  • files string | Array<string> | Object | Array<Object>#

    • name string

      Имя файла

    • mimeType string

      Тип файла

    • buffer Buffer

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

  • options Object (опционально)

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

      Устарело

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

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

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

Этот параметр не оказывает никакого влияния.

  • signal AbortSignal (необязательный) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

    Максимальное время в миллисекундах. По умолчанию 0 - без тайм-аута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


tap​

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

Вместо этого используйте вариант на основе локаторов — locator.tap(). Подробнее читайте о локаторах.

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

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

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

примечание

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

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

await frame.tap(selector);
await frame.tap(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

    • modifiers Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (опционально)#

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

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

      Устарело

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

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

    • position Object (опционально)#

Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, прокручивает ли Playwright страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется "auto": при необходимости выполняется прокрутка до элемента, в том числе во вложенных прокручиваемых контейнерах. Если установлено значение "none", Playwright не выполняет прокрутку до элемента, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что элемент доступен пользователю без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и будет выброшена ошибка. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


textContent​

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

Вместо этого используйте вариант на основе локаторов — locator.textContent(). Подробнее читайте о локаторах.

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

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

await frame.textContent(selector);
await frame.textContent(selector, options);

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


type​

Добавлено до v1.9 frame.type
Устарело

В большинстве случаев вам следует использовать locator.fill() вместо этого. Нажимать клавиши по одной нужно только если на странице есть специальная обработка клавиатуры — в этом случае используйте locator.pressSequentially().

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

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

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

Аргументы

  • selector string#

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

  • text string#

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

  • options Object (опционально)

    • delay number (опционально)#

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

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

      Устарело

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

Этот параметр не оказывает никакого влияния.

  • signal AbortSignal (необязательный) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


uncheck​

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

Вместо этого используйте вариант на основе локатора — locator.uncheck(). Подробнее о локаторах.

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

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

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

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

await frame.uncheck(selector);
await frame.uncheck(selector, options);

Аргументы

  • selector string#

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

  • options Object (опционально)

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

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

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

      Устарело

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

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

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

Точка относительно верхнего левого угла области элемента, включающей внутренние отступы (padding box). Если не указана, используется какая-либо видимая точка элемента.

  • scroll "auto" | "none" (необязательно) Добавлено в: v1.62#

    Определяет, будет ли Playwright прокручивать страницу, чтобы элемент оказался в области видимости перед выполнением действия. По умолчанию используется значение "auto": при необходимости элемент прокручивается в область видимости, в том числе за счёт прокрутки вложенных прокручиваемых контейнеров. При значении "none" Playwright не выполняет прокрутку, и действие завершается ошибкой, если элемент ещё не находится в области просмотра. Это полезно для проверки того, что пользователь может взаимодействовать с элементом без дополнительной прокрутки.

  • signal AbortSignal (необязательно) Добавлено в: v1.62#

    Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

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

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

  • timeout number (опционально)#

    Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить с помощью опции actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

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

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

Возвращает


waitForNavigation​

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

Этот метод по своей природе подвержен состояниям гонки, пожалуйста, используйте frame.waitForURL() вместо него.

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

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

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

// Начните ожидание навигации перед кликом. Обратите внимание, что нет await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise;
примечание

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

Аргументы

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить ожидание с помощью AbortSignal. Если сигнал отменён, ожидание будет прервано, а операция завершится с ошибкой. Обратите внимание, что передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • timeout number (необязательно)#

      Максимальное время выполнения операции в миллисекундах. По умолчанию равно 0 — без ограничения времени. Значение по умолчанию можно изменить с помощью параметра navigationTimeout в конфигурации или методов browserContext.setDefaultNavigationTimeout(), browserContext.setDefaultTimeout(), page.setDefaultNavigationTimeout() или page.setDefaultTimeout().

    • url string | RegExp | URLPattern | function(URL):boolean (необязательно)#

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

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)#

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

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

Возвращает


waitForSelector​

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

Используйте веб-ассерты, проверяющие видимость, или основанный на локаторах locator.waitFor() вместо этого. Подробнее о локаторах.

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

примечание

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

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

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

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

const { chromium } = require('playwright'); // Или 'firefox' или 'webkit'.

(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
for (const currentURL of ['https://google.com', 'https://bbc.com']) {
await page.goto(currentURL);
const element = await page.mainFrame().waitForSelector('img');
console.log('Loaded image: ' + await element.getAttribute('src'));
}
await browser.close();
})();

Аргументы

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

  • options Object (необязательно)
    • signal AbortSignal (необязательно) Добавлено в: v1.62#

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана с выбросом ошибки. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию, который можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • state "attached" | "detached" | "visible" | "hidden" (необязательно)#

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

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

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

    • timeout number (опционально)#

      Максимальное время в миллисекундах. По умолчанию 0 - без таймаута. Значение по умолчанию можно изменить через опцию actionTimeout в конфигурации или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

Возвращает


waitForTimeout​

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

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

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

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

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

await frame.waitForTimeout(timeout);

Аргументы

  • timeout number#

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

Возвращает