В автоматизированном тестировании часто возникает необходимость взаимодействовать с элементами на странице с использованием клавиатуры. 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 и другие.
Модификаторы — это специальные клавиши, которые используются в комбинации с другими клавишами для создания сложных действий. К модификаторам относятся:
CtrlShiftAltWindows или Command на Macawait 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 поддерживает
ряд специальных клавиш:
TabEscapeBackspaceDeleteArrowUp, 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 позволяет создавать мощные и гибкие тесты для взаимодействия с веб-приложениями. Использование комбинаций клавиш и модификаторов помогает точно воспроизводить действия пользователя и тестировать различные сценарии взаимодействия с интерфейсом.