Spec-Zone.ru › Playwright

Автоожидание

Введение​

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

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

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

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

Действие Видимый Стабильный Получает события Включен Редактируемый
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() Элемент прикреплен
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() Элемент имеет свойство класса
expect(locator).toHaveCount() Список содержит точное количество дочерних элементов
expect(locator).toHaveCSS() Элемент имеет свойство CSS
expect(locator).toHaveId() Элемент имеет ID
expect(locator).toHaveJSProperty() Элемент имеет свойство JavaScript
expect(locator).toHaveText() Элемент соответствует тексту
expect(locator).toHaveValue() Поле ввода имеет значение
expect(locator).toHaveValues() Выпадающий список имеет выбранные значения
expect(page).toHaveTitle() У страницы есть заголовок
expect(page).toHaveURL() У страницы есть URL
expect(response).toBeOK() Ответ имеет статус OK

Дополнительную информацию см. в руководстве по утверждениям.

Видимый​

Элемент считается видимым, если у него есть непустая область и нет visibility:hidden вычисленного стиля.

Обратите внимание, что согласно этому определению:

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

Стабильный​

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

Включённый​

Элемент считается включённым, если он не является <button>, <select>, <input> или <textarea> со свойством disabled.

Редактируемый​

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

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

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

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

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

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

Spec-Zone.ru

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