Навигация с клавиатуры — один из ключевых аспектов автоматизированного тестирования веб-приложений. Во время взаимодействия с интерфейсом пользователи часто используют клавиши для выполнения различных действий, таких как прокрутка страницы, выбор опций в формах или переключение между элементами. Для тестировщиков, использующих WebdriverIO, важно уметь эмулировать такие действия для обеспечения полноты тестирования.
WebdriverIO предоставляет несколько способов взаимодействия с
элементами веб-страницы с использованием клавиш. Важнейшими
инструментами для этого являются методы keys(),
addValue(), setValue() и
selectByValue(). Каждое из этих действий может быть
использовано для имитации реальных действий пользователей и проверки
корректности работы интерфейса.
keys()Метод keys() является основным инструментом для эмуляции
нажатия клавиш. С помощью этого метода можно передавать клавиши на
уровне браузера и взаимодействовать с элементами страницы. Для того
чтобы симулировать нажатие конкретной клавиши, достаточно передать её
название в качестве аргумента метода.
Пример:
const { remote } = require('webdriverio');
async function navigate() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
const inputField = await $('#inputField'); // Поиск поля ввода
await inputField.click(); // Клик по полю для фокуса
// Нажатие клавиши 'Enter'
await browser.keys('Enter');
await browser.deleteSession();
}
navigate();
В этом примере метод keys('Enter') имитирует нажатие
клавиши Enter после того, как поле ввода получает фокус.
keys() поддерживает не только стандартные символы клавиш,
такие как буквы и цифры, но и функциональные клавиши, такие как
Enter, Tab, Backspace и
другие.
WebdriverIO также поддерживает сочетания клавиш, что может быть
полезно для более сложных сценариев, например, при эмуляции нажатия
нескольких клавиш одновременно (например, Ctrl+C,
Shift+Tab).
Для этого можно передавать массив клавиш в метод keys(),
что позволяет выполнять более сложные взаимодействия.
Пример:
const { remote } = require('webdriverio');
async function navigate() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
const inputField = await $('#inputField');
await inputField.click();
// Использование комбинации клавиш Ctrl+A
await browser.keys(['Control', 'a']);
await browser.deleteSession();
}
navigate();
В данном случае комбинация клавиш Ctrl+A будет выполнена
через массив, где первый элемент — это клавиша Control, а
второй — a. Это позволяет эмулировать действия
пользователя, требующие комбинации нескольких клавиш.
Для тестирования форм и других элементов ввода в WebdriverIO
используются методы addValue(), setValue() и
clearValue(). Эти методы позволяют заполнять поля, очищать
их или отправлять данные, как это делает пользователь с клавиатуры.
addValue() добавляет значение в существующее содержимое
поля ввода.setValue() полностью заменяет содержимое поля.clearValue() очищает поле ввода.Пример:
const { remote } = require('webdriverio');
async function formTest() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
const inputField = await $('#inputField');
// Заполнение поля ввода
await inputField.setValue('Test Value');
// Очистка поля
await inputField.clearValue();
// Добавление значения в поле
await inputField.addValue('New Value');
await browser.deleteSession();
}
formTest();
Эти методы полезны для автоматизации ввода текста в поля форм, имитируя работу с клавиатурой, и могут быть использованы для тестирования поведения веб-страницы в ответ на изменение данных.
TabОдной из важных задач при тестировании является проверка навигации
между элементами с использованием клавиши Tab. Эта клавиша
обычно используется для перехода между активными полями на странице. В
WebdriverIO можно эмулировать нажатие клавиши Tab для
тестирования переходов фокуса.
Пример:
const { remote } = require('webdriverio');
async function tabNavigation() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
const firstField = await $('#firstField');
const secondField = await $('#secondField');
await firstField.click(); // Клик по первому полю
await browser.keys('Tab'); // Переключение на второе поле
// Проверка, что фокус находится на втором поле
const isFocused = await secondField.isFocused();
console.log(isFocused); // true, если фокус на втором поле
await browser.deleteSession();
}
tabNavigation();
Этот код позволяет имитировать переход между элементами формы, что важно для проверки корректности работы навигации с клавиатуры.
Прокрутка страницы с помощью клавиатуры также является важной частью
автоматизации. Веб-браузеры позволяют пользователю прокручивать страницу
с помощью клавиш PageUp, PageDown, стрелок
вверх и вниз. В WebdriverIO это можно реализовать через метод
keys().
Пример:
const { remote } = require('webdriverio');
async function scrollTest() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
// Прокрутка страницы вниз
await browser.keys('PageDown');
// Прокрутка страницы вверх
await browser.keys('PageUp');
await browser.deleteSession();
}
scrollTest();
Эти действия могут быть полезны при тестировании страницы с длинными списками, формами и другими элементами, требующими прокрутки.
Для взаимодействия с выпадающими списками и другими элементами выбора
в WebdriverIO также можно использовать клавиши. Например, клавиша
ArrowDown используется для перемещения по элементам
выпадающего списка.
Пример:
const { remote } = require('webdriverio');
async function dropdownTest() {
const browser = await remote({
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://example.com');
const dropdown = await $('#dropdown');
await dropdown.click(); // Клик по выпадающему списку
// Навигация по элементам списка
await browser.keys('ArrowDown'); // Перемещение вниз по списку
await browser.keys('Enter'); // Выбор первого элемента
await browser.deleteSession();
}
dropdownTest();
Использование стрелок в выпадающих списках позволяет имитировать действия пользователя при выборе опций и проверять, как интерфейс реагирует на такие действия.
Навигация с клавиатуры в WebdriverIO является мощным инструментом для
тестирования пользовательского взаимодействия с веб-страницами.
Возможность эмуляции различных клавиш и сочетаний клавиш позволяет
протестировать интерфейсы на полноту и корректность взаимодействия.
Методы keys(), addValue(),
setValue() и другие функции WebdriverIO обеспечивают
гибкость в автоматизации тестирования и имитации действий
пользователей.