WebdriverIO предоставляет гибкие возможности для эмуляции взаимодействий с клавиатурой в браузере. Использование комбинаций клавиш позволяет тестировать сценарии, которые включают горячие клавиши, управление формами, навигацию и функциональные сокращения.
Для эмуляции нажатий клавиш используется объект browser
или элементы страницы через метод element.keys(). Основные
методы:
browser.keys(value) — отправка одной или нескольких
клавиш на текущий активный элемент.element.setValue(value) — ввод текста в поле ввода с
эмуляцией обычной печати.element.addValue(value) — добавление текста к уже
существующему значению элемента.Аргумент value может быть строкой или массивом
строк/специальных клавиш.
WebdriverIO использует стандартные клавиши WebDriver, которые
перечислены в объекте Key:
Enter — клавиша EnterTab — переключение фокусаShift, Control, Alt,
Meta — модификаторыArrowUp, ArrowDown,
ArrowLeft, ArrowRight — навигацияBackspace, Delete — удаление символовEscape — выход из модальных оконПример отправки одной специальной клавиши:
browser.keys('Enter');
Для симуляции сочетаний клавиш используется массив с последовательностью нажатий и отпусканий клавиш. Основной принцип: сначала нажимается модификатор, затем основная клавиша, затем модификатор отпускается.
Пример комбинации Ctrl + A (выделить весь текст):
browser.keys(['Control', 'a', 'Control']);
Эта запись эквивалентна последовательности:
ControlaControlДля комбинаций с Shift или Alt используется
аналогичный принцип.
WebdriverIO позволяет смешивать ввод текста и нажатия клавиш в одной цепочке. Например, ввод текста с выделением:
const input = await $('#inputField');
await input.setValue('Тест');
await input.keys(['Shift', 'ArrowLeft', 'Shift']); // выделение последнего символа
await input.keys('Delete'); // удаление выделенного символа
addValue для динамического вводаМетод addValue полезен для последовательного ввода с
имитацией печати и управления клавишами:
const input = await $('#inputField');
await input.addValue('Hello');
await input.addValue(['ArrowLeft', 'ArrowLeft', 'Backspace']);
В этом примере курсор перемещается влево на два символа и удаляет один символ.
Комбинации клавиш активно применяются для закрытия модальных окон или диалогов, где кнопки управления недоступны напрямую:
browser.keys('Escape'); // закрытие модального окна
browser.keys(['Control', 'w', 'Control']); // закрытие вкладки
Для тестирования интерактивных компонентов, таких как таблицы, списки или выпадающие меню, удобно использовать клавиши стрелок:
const list = await $('#dropdownList');
await list.click();
await list.keys(['ArrowDown', 'ArrowDown', 'Enter']); // выбор третьего элемента
click() или focus() помогут установить
фокус.setValue и
addValue, а не комбинации Shift + буква, если
нет необходимости проверять именно работу модификаторов.Можно комбинировать несколько модификаторов одновременно. Пример
Ctrl + Shift + N:
browser.keys(['Control', 'Shift', 'n', 'Shift', 'Control']);
Порядок важен: сначала нажимаются все модификаторы, затем основная клавиша, затем модификаторы отпускаются в обратном порядке.
Комбинации клавиш часто применяются для автоматизации форм:
Tab — переход между полямиEnter — отправка формыShift + Tab — переход к предыдущему полюПример навигации по форме:
await browser.keys('Tab'); // переход к следующему полю
await browser.keys('Enter'); // отправка формы
Использование этих техник позволяет тестировать полноценные сценарии взаимодействия пользователя с веб-приложением, включая горячие клавиши и навигацию без мыши.