Spec-Zone.ru › Playwright

Кадр

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

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

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

Пример вывода дерева кадров:

const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.

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

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

Методы​

addScriptTag​

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

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

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

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

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

Аргументы

  • options Объект (необязательно)
    • content строка (необязательно)

      Исходное содержимое JavaScript, которое необходимо внедрить в кадр.

    • path строка (необязательно)

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

    • type строка (необязательно)

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

    • url строка (необязательно)

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

Возвращает

  • Promise<ElementHandle>

addStyleTag​

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

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

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

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

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

Аргументы

  • options Объект (необязательно)
    • content строка (необязательно)

      Исходное содержимое CSS для внедрения в кадр.

    • path строка (необязательно)

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

    • url строка (необязательно)

      URL тега <link>.

Возвращает

  • Promise<ElementHandle>

childFrames​

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

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

frame.childFrames();

Возвращает

  • Массив<Кадр>

content​

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

Получает полное HTML-содержимое кадра, включая доctype.

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

await frame.content();

Возвращает

  • Promise<строка>

dragAndDrop​

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

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

Аргументы

  • source строка

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

  • target строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • sourcePosition Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • targetPosition Объект (необязательно)

      • x число

      • y число

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<void>

evaluate​

Добавлено до версии 1.9

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

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

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

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

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

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

console.log(await frame.evaluate('1 + 2')); // prints "3"

ElementHandle можно передать в качестве аргумента в frame.evaluate():

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

Аргументы

  • pageFunction функция | строка

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

  • arg EvaluationArgument (необязательно)

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

Возвращает

  • Promise<сериализуемое>

evaluateHandle​

Добавлено до версии 1.9

Возвращает результат выполнения pageFunction в виде JSHandle.

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

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

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

// Handle for the window object
const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));

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

const aHandle = await frame.evaluateHandle('document'); // Handle for the 'document'.

JSHandle можно передать в качестве аргумента в frame.evaluateHandle():

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

Аргументы

  • pageFunction функция | строка

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

  • arg EvaluationArgument (необязательно)

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

Возвращает

  • Promise<JSHandle>

frameElement​

Добавлено до версии 1.9

Возвращает ElementHandle элемента, соответствующего данному фрейму.

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

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

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

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

Возвращает

  • Promise<ElementHandle>

frameLocator​

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

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

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

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

Аргументы

  • selector строка

    Селектор для выбора элемента DOM.

Возвращает

  • FrameLocator

getByAltText​

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

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

Например, этот метод найдет изображение с текстовым описанием "Логотип Playwright":

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

Аргументы

  • text строка | RegExp

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

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

    • exact логическое значение (необязательно)

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

Возвращает

  • Locator

getByLabel​

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

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

Например, этот метод найдет поля ввода с метками "Имя пользователя" и "Пароль" в следующем 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 строка | RegExp

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

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

    • exact логическое значение (необязательно)

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

Возвращает

  • Locator

getByPlaceholder​

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

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

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

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

Можно заполнить поле ввода после поиска по плацехолдеру:

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

Аргументы

  • text строка | RegExp

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

  • options Объект (необязательно)

    • exact логическое значение (необязательно)

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

Возвращает

  • Локатор

getByRole​

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

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

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

<h3>Sign up</h3>
<label>
  <input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>

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

await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();

await page.getByRole('checkbox', { name: 'Subscribe' }).check();

await page.getByRole('button', { name: /submit/i }).click();

Аргументы

  • role "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem"

    Требуемая роль aria.

  • options Объект (необязательно)

    • checked логическое значение (необязательно)

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

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

    • disabled логическое значение (необязательно)

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

      примечание

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

    • exact логическое значение (необязательно)

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

    • expanded логическое значение (необязательно)

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

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

    • includeHidden логическое значение (необязательно)

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

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

    • level число (необязательно)

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

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

    • name строка | RegExp (необязательно)

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

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

    • pressed логическое значение (необязательно)

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

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

    • selected логическое значение (необязательно)

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

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

Возвращает

  • Локатор

Подробности

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

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

getByTestId​

Найти элемент по идентификатору теста.

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

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

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

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

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

Аргументы

  • testId строка | RegExp

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

Возвращает

  • Локатор

Подробности

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

// Set custom test id attribute from @playwright/test config:
import { defineConfig } from '@playwright/test';

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

getByText​

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

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

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

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

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

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

// Matches <span>
page.getByText('world');

// Matches first <div>
page.getByText('Hello world');

// Matches second <div>
page.getByText('Hello', { exact: true });

// Matches both <div>s
page.getByText(/Hello/);

// Matches second <div>
page.getByText(/^hello$/i);

Аргументы

  • text строка | RegExp

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

  • options Объект (необязательно)

    • exact булево (необязательно)

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

Возвращает

  • Локатор

Подробности

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

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

getByTitle​

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

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

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

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

Вы можете проверить количество проблем после его поиска по тексту title:

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

Аргументы

  • text строка | RegExp

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

  • options Объект (необязательно)

    • exact булево (необязательно)

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

Возвращает

  • Локатор

goto​

Добавлен до версии 1.9

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

Метод вернет ошибку, если:

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

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

примечание

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

примечание

Режим без графического интерфейса не поддерживает навигацию к документу PDF. См. соответствующую проблему.

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

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

Аргументы

  • url строка

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

  • options Объект (необязательно)

    • referer строка (необязательно)

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

    • timeout число (необязательно)

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

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)

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

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

Возвращает

  • Promise<null | Ответ>

isDetached​

Добавлен до версии 1.9

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

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

frame.isDetached();

Возвращает

  • булево

isEnabled​

Добавлен до версии 1.9

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict булево (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<булево>

locator​

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

Дополнительная информация о локаторах.

Дополнительная информация о локаторах.

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • has Локатор (необязательно)

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

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

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

    • hasNot Локатор (необязательно)

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

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

    • hasNotText строка | RegExp (необязательно)

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

    • hasText строка | RegExp (необязательно)

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

Возвращает

  • Локатор

name​

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

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

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

примечание

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

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

frame.name();

Возвращает

  • строка

page​

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

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

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

frame.page();

Возвращает

  • Страница

parentFrame​

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

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

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

frame.parentFrame();

Возвращает

  • null | Фрейм

setContent​

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

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

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

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

Аргументы

  • html строка

    HTML-разметка для назначения странице.

  • options Объект (необязательно)

    • timeout число (необязательно)

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

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)

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

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

Возвращает

  • Promise<void>

title​

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

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

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

await frame.title();

Возвращает

  • Promise<строка>

url​

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

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

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

frame.url();

Возвращает

  • строка

waitForFunction​

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

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

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

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

const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.

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

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

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

Аргументы

  • pageFunction функция | строка

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

  • arg EvaluationArgument (необязательно)

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

  • options Объект (необязательно)

    • polling число | "raf" (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<JSHandle>

waitForLoadState​

Добавлено до версии 1.9

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

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

примечание

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

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

await frame.click('button'); // Click triggers navigation.
await frame.waitForLoadState(); // Waits for 'load' state by default.

Аргументы

  • state "load" | "domcontentloaded" | "networkidle" (необязательно)

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

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

waitForURL​

Ожидает навигации фрейма по указанному URL.

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

await frame.click('a.delayed-navigation'); // Clicking the link will indirectly cause a navigation
await frame.waitForURL('**/target.html');

Аргументы

  • url строка | RegExp | функция(URL):boolean

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

  • options Объект (необязательно)

    • timeout число (необязательно)

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

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)

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

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

Возвращает

  • Promise<void>

Устаревшее​

$​

Не рекомендуется

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

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict булево значение (необязательно)

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

Возвращает

  • Promise<null | ElementHandle>

$$​

Не рекомендуется

Используйте основанный на локаторе frame.locator() вместо этого. Дополнительную информацию о локаторах см. ниже.

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

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

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

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

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

await frame.$$(selector);

Аргументы

  • selector строка

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

Возвращаемое значение

  • Promise<Массив<ElementHandle>>

$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 строка

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

  • pageFunction функция(Элемент) | строка

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

  • arg АргументВычисления (необязательно)

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

  • options Объект (необязательно)

    • strict булево (необязательно)

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

Возвращаемое значение

  • Promise<Сериализуемое>

$$eval​

Не рекомендуется

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • pageFunction функция(Массив<Элемент>) | строка

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

  • arg АргументВычисления (необязательно)

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

Возвращаемое значение

  • Promise<Сериализуемое>

check​

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

Используйте основанный на локаторе locator.check() вместо этого. Дополнительную информацию о локаторах см. ниже.

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Обещание<void>

click​

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

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • button "слева" | "справа" | "посередине" (необязательно)

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

    • clickCount число (необязательно)

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

    • delay число (необязательно)

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

    • force логическое значение (необязательно)

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

    • modifiers Массив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Обещание<void>

dblclick​

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

Используйте locator.dblclick() на основе локализации вместо этого. Дополнительную информацию о локализациях см. здесь.

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

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

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

Примечание

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • button "слева" | "справа" | "посредине" (необязательно)

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

    • delay число (необязательно)

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

    • force логическое значение (необязательно)

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

    • modifiers Массив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

      Эта опция не оказывает влияния.

      Эта опция не оказывает влияния.

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<void>

dispatchEvent​

Добавлен до версии 1.9
Не рекомендуется

Используйте locator.dispatchEvent() на основе локализации вместо этого. Дополнительную информацию о локализациях см. здесь.

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

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

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

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

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

  • DeviceMotionEvent
  • DeviceOrientationEvent
  • DragEvent
  • Event
  • FocusEvent
  • KeyboardEvent
  • MouseEvent
  • PointerEvent
  • TouchEvent
  • WheelEvent

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

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

Аргументы

  • selector строка

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

  • type строка

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

  • eventInit EvaluationArgument (необязательно)

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

  • options Объект (необязательно)

    • strict булево (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

fill​

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

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • value строка

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

  • options Объект (необязательно)

    • force булево (необязательно)

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

    • noWaitAfter булево (необязательно)

      Устарело

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

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

    • strict булево (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

focus​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict булево (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

getAttribute​

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

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

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

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

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

Аргументы

  • selector строка

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

  • name строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<null | строка>

hover​

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

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

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

    • modifiers Массив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устаревший параметр

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Обещание<void>

innerHTML​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<строка>

innerText​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<строка>

inputValue​

Не рекомендуется

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<строка>

isChecked​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<логическое>

isDisabled​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Обещание<логическое>

isEditable​

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

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<логическое значение>

isHidden​

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

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

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

Пример использования

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Устарело

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

Возвращает

  • Promise<логическое значение>

isVisible​

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

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

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

Пример использования

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

      Устарело

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

Возвращает

  • Promise<логическое значение>

press​

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

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

Ключ может указать значение keyboardEvent.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 приведет к вводу соответствующего текста в верхнем регистре.

Если ключ — это один символ, он чувствителен к регистру, поэтому значения a и A генерируют разные тексты.

Также поддерживаются сочетания клавиш, такие как key: "Control+o", key: "Control++ или key: "Control+Shift+T". При указании модификатора модификатор нажимается и удерживается, а затем нажимается последующая клавиша.

Пример использования

await frame.press(selector, key);
await frame.press(selector, key, options);

Аргументы

  • selector строка

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

  • key строка

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

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

    • delay число (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

selectOption​

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

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

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

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

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

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

Пример использования

// Single selection matching the value or label
frame.selectOption('select#colors', 'blue');

// single selection matching both the value and the label
frame.selectOption('select#colors', { label: 'Blue' });

// multiple selection
frame.selectOption('select#colors', 'red', 'green', 'blue');

Аргументы

  • selector строка

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

  • values null | строка | ElementHandle | массив<строка> | объект | массив<ElementHandle> | массив<объект>

    • value строка (необязательно)

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

    • label строка (необязательно)

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

    • index число (необязательно)

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

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

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

    • force логическое значение (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<массив<строка>>

setChecked​

Не рекомендуется

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

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

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

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

Пример использования

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

Аргументы

  • selector строка

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

  • checked логическое

    Флаг для установки или сброса состояния чекбокса.

  • options Объект (необязательно)

    • force логическое (необязательно)

      Флаг для пропуска проверок доступности. По умолчанию false.

    • noWaitAfter логическое (необязательно)

      Устаревший

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое (необязательно)

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

Возвращает

  • Promise<void>

setInputFiles​

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

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

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

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

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

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

Аргументы

  • selector строка

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

  • files строка | Массив<строка> | Объект | Массив<Объект>

    • name строка

      Имя файла

    • mimeType строка

      Тип файла

    • buffer Буфер

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

  • options Объект (необязательно)

    • noWaitAfter логическое (необязательно)

      Устаревший

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

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

    • strict логическое (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

tap​

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

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

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

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

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

примечание

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • force логическое значение (необязательно)

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

    • modifiers Массив<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"> (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • position Объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<void>

textContent​

Добавлен до версии 1.9
Не рекомендуется

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

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

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

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

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<null | строка>

type​

Добавлен до версии 1.9
Устарело

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

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

Для нажатия специальной клавиши, например Control или ArrowDown, используйте keyboard.press().

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

Аргументы

  • selector строка

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

  • text строка

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

  • options Объект (необязательно)

    • delay число (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

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

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращает

  • Promise<void>

uncheck​

Добавлен до версии 1.9
Не рекомендуется

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

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

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

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

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

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

Аргументы

  • selector строка

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

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

    • force логическое значение (необязательно)

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

    • noWaitAfter логическое значение (необязательно)

      Устарело

      Эта опция не оказывает влияния.

      Эта опция не оказывает влияния.

    • position объект (необязательно)

      • x число

      • y число

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

    • strict логическое значение (необязательно)

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

    • timeout число (необязательно)

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

    • trial логическое значение (необязательно)

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

Возвращает

  • Promise<пустое значение>

waitForNavigation​

Добавлен до версии 1.9
Устарел

Этот метод потенциально небезопасен, используйте frame.waitForURL() вместо него.

Ожидает навигации фрейма и возвращает ответ основного ресурса. В случае множественных перенаправлений, навигация разрешится с ответом последнего перенаправления. В случае навигации на другой якорь или навигации из-за использования History API, навигация разрешится с null.

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

Этот метод ожидает, пока фрейм перейдёт на новый URL. Это полезно в случаях, когда код косвенно вызывает навигацию фрейма. Рассмотрим этот пример:

// Start waiting for navigation before clicking. Note no await.
const navigationPromise = page.waitForNavigation();
await page.getByText('Navigate after timeout').click();
await navigationPromise;
Примечание

Использование History API для изменения URL считается навигацией.

Аргументы

  • options объект (необязательно)
    • timeout число (необязательно)

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

    • url строка | выражение регулярного типа | функция(URL):логическое значение (необязательно)

      Шаблон glob, выражение регулярного типа или предикат, получающий URL для сопоставления во время ожидания навигации. Обратите внимание, что если параметр является строкой без символов подстановок, метод будет ожидать навигации к URL, точно равному строке.

    • waitUntil "load" | "domcontentloaded" | "networkidle" | "commit" (необязательно)

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

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

Возвращает

  • Promise<null | Ответ>

waitForSelector​

Добавлен до версии 1.9
Не рекомендуется

Используйте веб-утверждения, проверяющие видимость, или locator.waitFor() на основе локализации. Узнайте больше о локализациях.

Возвращает, когда элемент, указанный селектором, удовлетворяет опции состояния. Возвращает null при ожидании hidden или detached.

Примечание

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

Ожидайте, пока селектор удовлетворяет опции состояния (появление/исчезновение из DOM или видимость/скрытие). Если в момент вызова метода селектор уже удовлетворяет условию, метод вернётся сразу. Если селектор не удовлетворяет условию в течение времени ожидания миллисекунд, функция выбросит исключение.

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

Этот метод работает через навигации:

const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  for (const currentURL of ['https://google.com', 'https://bbc.com']) {
    await page.goto(currentURL);
    const element = await page.mainFrame().waitForSelector('img');
    console.log('Loaded image: ' + await element.getAttribute('src'));
  }
  await browser.close();
})();

Аргументы

  • selector строка

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

  • options Объект (необязательно)

    • state "прикреплённый" | "откреплённый" | "видимый" | "скрытый" (необязательно)

      По умолчанию 'visible'. Может быть:

      • 'attached' - ожидание, пока элемент появится в DOM.
      • 'detached' - ожидание, пока элемент не будет в DOM.
      • 'visible' - ожидание, пока у элемента будет непустая область отрисовки и нет visibility:hidden. Обратите внимание, что элемент без содержимого или с display:none имеет пустую область отрисовки и не считается видимым.
      • 'hidden' - ожидание, пока элемент будет откреплён от DOM или у него будет пустая область отрисовки или visibility:hidden. Это противоположно опции 'visible'.
    • strict булево значение (необязательно)

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

    • timeout число (необязательно)

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

Возвращаемое значение

  • Promise<null | ElementHandle>

waitForTimeout​

Добавлен до версии 1.9
Не рекомендуется

Никогда не используйте таймаут в продакшене. Тесты, ожидающие время, ненадёжны. Используйте действия Locator и веб-утверждения, которые автоматически ждут.

Ожидает заданный таймаут в миллисекундах.

Обратите внимание, что frame.waitForTimeout() следует использовать только для отладки. Тесты, использующие таймер в продакшене, будут ненадёжными. Используйте сигналы, такие как события сети, селекторы, которые становятся видимыми, и другие.

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

await frame.waitForTimeout(timeout);

Аргументы

  • timeout число

    Таймаут ожидания

Возвращаемое значение

  • Promise<void>

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-frame

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API