Браузерные комбинации

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

Взаимодействие с клавишами и их комбинациями

WebdriverIO предоставляет встроенные методы для работы с клавишами. Для симуляции нажатий клавиш и комбинаций используется метод browser.keys(), который позволяет отправлять один или несколько символов в окно браузера.

Пример использования browser.keys()
browser.keys('Enter');

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

Комбинации клавиш

Для работы с более сложными комбинациями клавиш, например, Ctrl + C, Ctrl + V, Shift + A, WebdriverIO поддерживает синтаксис для использования модификаторов клавиш. Модификаторы — это клавиши, которые изменяют поведение других клавиш. К таким клавишам относятся Shift, Ctrl, Alt, Meta.

Пример комбинации клавиш
browser.keys(['Control', 'a']);

Этот пример сымитирует нажатие Ctrl + A, что обычно вызывает выделение всего текста в активном поле. Метод keys() принимает массив, где можно передавать несколько элементов — модификатор и клавишу, которую нужно использовать с этим модификатором.

Особенности работы с клавишами

  1. Использование клавиш модификаторов Модификаторы клавиш не всегда могут работать как ожидается, если их не удерживать правильно. Например, для правильной симуляции удержания клавиши Shift нужно передавать команду с зажатием и отпусканием:
browser.keys(['Shift', 'A']); // сымитирует Shift + A
  1. Задержка между клавишами В некоторых случаях полезно задать задержку между нажатием клавиш, чтобы браузер успел отреагировать на каждую команду. Например, для написания длинного пароля или текста, можно добавить промежуток между нажатиями клавиш.
browser.keys(['Shift', 'a', 'b', 'c']); // Печать букв с Shift
  1. Задержка между модификаторами и основными клавишами Иногда браузеры могут не успевать обработать несколько модификаторов или одновременно несколько клавиш. В таких случаях можно добавить паузу между ними:
browser.keys(['Control']);
browser.pause(100); // Задержка в 100 мс
browser.keys(['c']);

Специфические клавиши браузера

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

  • F1 - F12: Функциональные клавиши
  • Backspace: Клавиша удаления
  • Escape: Отмена операции
  • Tab: Переход по элементам формы
  • Arrow keys: Стрелки направления (вверх, вниз, влево, вправо)
  • Enter: Подтверждение ввода

Каждая из этих клавиш может быть сымитирована с помощью метода browser.keys().

Пример использования функциональных клавиш
browser.keys('F5'); // Сымитирует нажатие F5 для перезагрузки страницы

Манипуляции с несколькими вкладками

WebdriverIO предоставляет механизмы для работы с несколькими вкладками браузера. Если необходимо переключаться между вкладками с использованием клавиш, такие действия можно выполнить с помощью сочетания Ctrl + Tab или Ctrl + Shift + Tab.

Пример переключения между вкладками
browser.keys(['Control', 'Tab']); // Переключение на следующую вкладку
browser.keys(['Control', 'Shift', 'Tab']); // Переключение на предыдущую вкладку

Взаимодействие с системным контекстом

WebdriverIO также поддерживает взаимодействие с системными окнами и контекстами, например, с использованием команды browser.keys() для симуляции операций, таких как копирование или вставка из буфера обмена:

browser.keys(['Control', 'c']); // Копирование
browser.keys(['Control', 'v']); // Вставка

Перехват клавиш

Кроме симуляции нажатий клавиш, WebdriverIO также позволяет использовать клавиши в тестах для контроля и проверки поведения приложения. Например, можно проверить, что определённое нажатие клавиши вызывает нужный эффект на странице. Для этого нужно перехватить событие и проверить состояние страницы после выполнения действия.

Пример проверки действия по клавише
browser.keys('Enter');
const isVisible = $('#result').isDisplayed();
assert.strictEqual(isVisible, true);

В этом примере нажатие клавиши Enter должно привести к появлению элемента, который проверяется на странице. Это позволяет проверять корректность реакции веб-страницы на пользовательские действия с клавишами.

Заключение

Работа с клавишами и их комбинациями в WebdriverIO предоставляет широкий набор возможностей для более глубокого взаимодействия с браузером и веб-приложениями. От простого нажатия клавиш до сложных комбинаций, включая модификаторы и функциональные клавиши, эти инструменты позволяют точнее имитировать действия реальных пользователей, а также тестировать реакции приложения на определённые пользовательские сценарии.