Spec-Zone.ru › Playwright

Автоматическое ожидание

Введение​

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

Например, для locator.click() Playwright проверит, что:

  • локатор соответствует ровно одному элементу
  • элемент видим
  • элемент стабилен, то есть не анимируется и анимация завершена
  • элемент получает события, то есть не перекрыт другими элементами
  • элемент активен

Ниже приведён полный список проверок возможности выполнения действия для каждого действия:

Действие Видим Стабилен Получает события Активен Доступен для редактирования
locator.check() Да Да Да Да -
locator.click() Да Да Да Да -
locator.dblclick() Да Да Да Да -
locator.setChecked() Да Да Да Да -
locator.tap() Да Да Да Да -
locator.uncheck() Да Да Да Да -
locator.hover() Да Да Да - -
locator.dragTo() Да Да Да - -
locator.screenshot() Да Да - - -
locator.fill() Да - - Да Да
locator.clear() Да - - Да Да
locator.selectOption() Да - - Да -
locator.selectText() Да - - - -
locator.scrollIntoViewIfNeeded() - Да - - -
locator.blur() - - - - -
locator.dispatchEvent() - - - - -
locator.focus() - - - - -
locator.press() - - - - -
locator.pressSequentially() - - - - -
locator.setInputFiles() - - - - -

Принудительное выполнение действий​

Некоторые действия, например locator.click(), поддерживают параметр force, который отключает необязательные проверки возможности выполнения действия. Например, передача истинного значения force методу locator.click() отключит проверку того, получает ли целевой элемент события щелчка.

Проверки​

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

Проверка Описание
expect(locator).toBeAttached() Элемент добавлен в DOM
expect(locator).toBeChecked() Флажок установлен
expect(locator).toBeDisabled() Элемент отключён
expect(locator).toBeEditable() Элемент доступен для редактирования
expect(locator).toBeEmpty() Контейнер пуст
expect(locator).toBeEnabled() Элемент активен
expect(locator).toBeFocused() Элемент находится в фокусе
expect(locator).toBeHidden() Элемент не виден
expect(locator).toBeInViewport() Элемент пересекается с областью просмотра
expect(locator).toBeVisible() Элемент виден
expect(locator).toContainText() Элемент содержит текст
expect(locator).toHaveAttribute() У элемента есть атрибут DOM
expect(locator).toHaveClass() У элемента есть свойство class
expect(locator).toHaveCount() Список содержит точное число дочерних элементов
expect(locator).toHaveCSS() У элемента есть свойство CSS
expect(locator).toHaveId() У элемента есть идентификатор
expect(locator).toHaveJSProperty() У элемента есть свойство JavaScript
expect(locator).toHaveText() Текст элемента соответствует заданному
expect(locator).toHaveValue() У поля ввода есть значение
expect(locator).toHaveValues() В элементе select выбраны параметры
expect(page).toHaveTitle() У страницы есть заголовок
expect(page).toHaveURL() У страницы есть URL
expect(response).toBeOK() Ответ имеет статус OK

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

Видимость​

Элемент считается видимым, если его ограничивающий прямоугольник имеет ненулевой размер и у него нет вычисленного стиля visibility:hidden.

Согласно этому определению:

  • Элементы нулевого размера не считаются видимыми.
  • Элементы с display:none не считаются видимыми.
  • Элементы с opacity:0 считаются видимыми.

Стабильность​

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

Активность​

Элемент считается активным, если он не отключён.

Элемент считается отключённым, если:

  • это <button>, <select>, <input>, <textarea>, <option> или <optgroup> с атрибутом [disabled];
  • это <button>, <select>, <input>, <textarea>, <option> или <optgroup>, являющийся частью <fieldset> с атрибутом [disabled];
  • это потомок элемента с атрибутом [aria-disabled=true].

Возможность редактирования​

Элемент считается доступным для редактирования, если он активен и не доступен только для чтения.

Элемент считается доступным только для чтения, если:

  • это <select>, <input> или <textarea> с атрибутом [readonly];
  • у него есть атрибут [aria-readonly=true] и роль aria, которая поддерживает его.

Получает события​

Элемент считается получающим события указателя, если он является целью события указателя в точке действия. Например, при щелчке в точке (10;10) Playwright проверяет, не перехватит ли щелчок в (10;10) другой элемент (обычно оверлей).

Например, рассмотрим сценарий, в котором Playwright нажмёт кнопку Sign Up независимо от того, когда был вызван locator.click():

  • страница проверяет уникальность имени пользователя, и кнопка Sign Up отключена;
  • после проверки на сервере отключённая кнопка Sign Up заменяется другой, уже активной кнопкой.

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/actionability

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API