Комбинации клавиш и модификаторы

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

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

Playwright использует методы, такие как page.keyboard.press(), page.keyboard.down(), и page.keyboard.up(), для взаимодействия с клавиатурой. Эти методы позволяют эмулировать нажатия клавиш, их удержание и отпускание.

Пример базового использования:
await page.keyboard.press('Enter');

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

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

Чтобы эмулировать комбинации клавиш, таких как Ctrl + A или Shift + C, Playwright предоставляет механизм комбинирования клавиш. Это важно для симуляции действий, которые требуют использования нескольких клавиш одновременно.

Пример комбинации клавиш:
await page.keyboard.press('Control+A');

В данном примере эмулируется сочетание клавиш Ctrl + A. Комбинированные клавиши записываются с использованием регистронезависимых кодов, таких как Control, Shift, Alt и другие.

Модификаторы клавиш

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

  • Control — обозначает клавишу Ctrl
  • Shift — обозначает клавишу Shift
  • Alt — обозначает клавишу Alt
  • Meta — обычно представляет клавишу Windows или Command на Mac
Пример использования модификаторов:
await page.keyboard.down('Control');
await page.keyboard.press('A');
await page.keyboard.up('Control');

Этот пример симулирует нажатие Ctrl + A. Вначале с помощью keyboard.down('Control') удерживается клавиша Control, затем эмулируется нажатие клавиши A, и в конце с помощью keyboard.up('Control') клавиша Control отпускается.

Удержание клавиши и многократные нажатия

Для сценариев, где нужно удерживать клавишу, например, при нажатии Shift или при многократных нажатиях на одну клавишу, Playwright предоставляет методы keyboard.down() и keyboard.up().

Пример удержания клавиши:
await page.keyboard.down('Shift');
await page.keyboard.press('ArrowUp');
await page.keyboard.press('ArrowUp');
await page.keyboard.up('Shift');

Здесь выполняется удержание клавиши Shift, после чего имитируются два нажатия клавиши ArrowUp. Такой подход полезен при эмуляции поведения, где требуется несколько последовательных действий с одним модификатором.

Специальные клавиши

Кроме стандартных клавиш, таких как Enter, ArrowUp, Backspace, Playwright поддерживает ряд специальных клавиш:

  • Tab
  • Escape
  • Backspace
  • Delete
  • ArrowUp, ArrowDown, ArrowLeft, ArrowRight

Чтобы эмулировать нажатие любой из этих клавиш, достаточно передать её имя в метод keyboard.press().

Пример с использованием специальных клавиш:
await page.keyboard.press('Tab');
await page.keyboard.press('Escape');

Взаимодействие с формами

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

Пример заполнения формы:
await page.fill('#username', 'testuser');
await page.fill('#password', 'password123');
await page.keyboard.press('Tab');
await page.keyboard.press('Enter');

Этот код заполняет поля с идентификаторами #username и #password, затем перемещается в следующее поле с помощью Tab и отправляет форму нажатием Enter.

Эмуляция действий с модификаторами

Модификаторы позволяют точно эмулировать поведение пользователя при работе с клавишами. В Playwright также можно комбинировать модификаторы для создания более сложных сценариев.

Пример использования нескольких модификаторов:
await page.keyboard.down('Control');
await page.keyboard.down('Shift');
await page.keyboard.press('C');
await page.keyboard.up('Shift');
await page.keyboard.up('Control');

В этом примере одновременно удерживаются клавиши Ctrl и Shift, после чего выполняется нажатие клавиши C.

Взаимодействие с клавишами в диалогах

Многие интерфейсы требуют взаимодействия с окнами диалогов, например, при подтверждении действия в модальных окнах. В таких случаях Playwright предоставляет методы для работы с клавишами в контексте диалогов, что позволяет имитировать действия, такие как нажатие Enter для подтверждения или Esc для отмены.

Пример с диалогом:
page.on('dialog', async dialog => {
  await dialog.accept(); // Эмуляция нажатия на кнопку "OK"
});

await page.click('#deleteButton'); // Ожидается диалог подтверждения

В данном случае Playwright отслеживает событие диалога, а затем выполняет действия, соответствующие нажатию кнопки “OK” (эмуляция нажатия клавиши Enter).

Работы с фокусом

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

Пример с фокусом:
await page.click('#username');
await page.keyboard.type('testuser');

Здесь фокус устанавливается на поле с идентификатором #username, после чего выполняется ввод текста.

Заключение

Работа с клавишами и модификаторами в Playwright позволяет создавать мощные и гибкие тесты для взаимодействия с веб-приложениями. Использование комбинаций клавиш и модификаторов помогает точно воспроизводить действия пользователя и тестировать различные сценарии взаимодействия с интерфейсом.