В автоматизированном тестировании веб-приложений одним из базовых
сценариев является работа с полями ввода. Cypress предоставляет удобные
методы для взаимодействия с элементами формы:
type() для ввода текста и
clear() для очистки содержимого поля.
type()Метод type() используется для эмуляции ввода текста
пользователем. Он поддерживает набор текста в любое поле ввода
(<input>, <textarea>) и позволяет
имитировать различные клавиши, включая специальные символы и
модификаторы.
Синтаксис:
cy.get('селектор').type('текст', { options })
селектор — CSS или другой валидный селектор
Cypress.'текст' — строка для ввода.options — объект дополнительных параметров
(необязательно).Основные возможности:
Можно использовать специальные символы для имитации клавиш, например
{enter}, {backspace}, {del},
{esc}, {tab}. Например:
cy.get('#search').type('Cypress{enter}')
Этот пример вводит текст и нажимает Enter.
Поддерживаются модификаторы клавиш: {ctrl},
{alt}, {shift}, {meta}. Например,
ввод заглавной буквы с помощью Shift:
cy.get('#input').type('{shift}cypress{shift}')
Иногда требуется имитировать реальный ввод пользователя с паузой между символами:
cy.get('#username').type('user123', { delay: 100 }) // 100 мс между нажатиями
type() поддерживает вставку текста в несколько шагов,
включая комбинации клавиш и спецсимволов:
cy.get('#comment')
.type('Hello, world!')
.type('{enter}New line')
.type('{selectall}{del}')
clear()Метод clear() удаляет содержимое поля ввода. Он часто
используется перед новым вводом текста, чтобы гарантировать отсутствие
старых значений.
Синтаксис:
cy.get('селектор').clear({ options })
селектор — элемент для очистки.options — объект с параметрами (необязательно).Примеры использования:
cy.get('#email').clear()
cy.get('#password').clear({ force: true })
force: true позволяет очистить поле даже если оно
скрыто или недоступно для стандартного взаимодействия.type() и
clear()Cypress по умолчанию проверяет, что элемент видим и не заблокирован
атрибутом disabled. Если поле скрыто, понадобится
использовать { force: true }.
Cypress автоматически ожидает, пока элемент станет доступным. Это
избавляет от необходимости вручную добавлять wait().
Методы type() и clear() вызывают
стандартные DOM-события: keydown, keypress,
input, keyup, change. Это важно
для корректного триггера логики в приложении.
clear() и
type()Часто в тестах встречается комбинация очистки поля и нового ввода:
cy.get('#search')
.clear()
.type('Cypress automation{enter}')
Это гарантирует, что старые данные не повлияют на результат теста.
<input type="text">) и
textareaПолностью поддерживаются все функции type() и
clear(). Можно эмулировать ввод многострочного текста с
{enter}.
<input type="password">)type() безопасно вводит текст без отображения символов в
консоли Cypress. clear() работает стандартно.
При работе с масками (например, даты или телефоны) иногда требуется симулировать ввод пошагово с задержкой и дополнительными проверками.
clear() перед
type(), если поле может содержать данные по
умолчанию.change, а иногда на input.delay только при
необходимости, чтобы ускорить тесты.should('have.value', ...), чтобы проверять
корректность ввода:cy.get('#username')
.clear()
.type('admin')
.should('have.value', 'admin')
Эти методы являются фундаментальными для автоматизации форм и взаимодействия с пользовательским вводом. Они позволяют эмулировать действия пользователя максимально приближенно к реальному поведению, обеспечивая надежность тестов и точность проверки работы интерфейса.