При автоматизации тестирования интерфейсов веб-приложений часто приходится работать с элементами формы, такими как чекбоксы и радио-кнопки. Эти элементы управления имеют важное значение для взаимодействия с пользователем, и правильная настройка их проверки или манипуляций с ними критична для успешного тестирования. В Playwright поддержка таких элементов реализована через удобные методы взаимодействия.
Чекбоксы представляют собой элементы, которые могут быть либо
включены, либо выключены. Взаимодействие с чекбоксами в Playwright
реализуется с помощью метода check() для установки
состояния в «включено» и uncheck() для «выключения».
await page.locator('input[type="checkbox"]').check();
Если нужно убедиться, что чекбокс действительно включен, можно
использовать метод isChecked(), который возвращает
true, если элемент находится в состоянии «включено», и
false в противном случае.
const isChecked = await page.locator('input[type="checkbox"]').isChecked();
console.log(isChecked); // true или false
Playwright поддерживает асинхронные операции, и часто требуется
дождаться, пока элемент изменит своё состояние. Для этого можно
использовать метод check() с параметром force,
если необходимо игнорировать видимость элемента или его состояние, и
метод waitForState(), чтобы дождаться изменения
состояния.
await page.locator('input[type="checkbox"]').check({ force: true });
await page.locator('input[type="checkbox"]').waitFor({ state: 'checked' });
Радио-кнопки отличаются от чекбоксов тем, что позволяют выбрать
только одно значение в группе. Взаимодействие с радио-кнопками в
Playwright осуществляется через методы check() и
uncheck(), аналогичные чекбоксам.
await page.locator('input[type="radio"]').check();
Важно, что при выборе радио-кнопки, остальные элементы в группе
становятся неактивными, что соответствует стандартному поведению. При
этом метод check() автоматически снимает выбор с других
радио-кнопок в той же группе.
Как и с чекбоксами, можно использовать метод
isChecked(), чтобы проверить, выбрана ли радио-кнопка.
const isRadioSelected = await page.locator('input[type="radio"]').isChecked();
console.log(isRadioSelected); // true или false
В случае работы с несколькими элементами можно использовать метод
locator() для выбора группы чекбоксов или радио-кнопок.
Например, для проверки того, что несколько чекбоксов выбраны, можно
использовать следующий подход:
const checkboxes = await page.locator('input[type="checkbox"]');
for (let i = 0; i < await checkboxes.count(); i++) {
const isChecked = await checkboxes.nth(i).isChecked();
console.log(`Checkbox ${i} is checked: ${isChecked}`);
}
Автоматизация тестирования с использованием чекбоксов и радио-кнопок часто требует проверки правильности выбора. Для этого необходимо использовать методы Playwright для моделирования сценариев с этими элементами. Например, проверка формы, в которой необходимо выбрать один из вариантов из нескольких радио-кнопок, или тестирование формы, где пользователь может выбрать несколько опций через чекбоксы.
await page.locator('input[type="checkbox"][value="option1"]').check();
await page.locator('input[type="checkbox"][value="option2"]').check();
await page.locator('input[type="radio"][value="option1"]').check();
await page.locator('input[type="radio"][value="option2"]').check(); // Эта строка не выполнится, так как можно выбрать только один вариант
В некоторых случаях взаимодействие с чекбоксами и радио-кнопками может быть частью более сложного сценария. Например, необходимо активировать чекбокс или радио-кнопку только при определённом условии (например, после появления дополнительного элемента или выполнения действия). В таких случаях Playwright позволяет использовать методы для отслеживания изменений DOM и асинхронных состояний.
// Пример использования ожидания, если чекбокс должен появиться после клика
await page.locator('button#showCheckbox').click();
await page.locator('input[type="checkbox"]').waitFor({ state: 'visible' });
await page.locator('input[type="checkbox"]').check();
Также Playwright предоставляет возможности для выполнения проверки с условием на странице до совершения действия, что помогает гибко взаимодействовать с чекбоксами и радио-кнопками в зависимости от состояния других элементов интерфейса.
force: true для манипуляций с
элементами, которые могут быть скрытыми или неактивными по
умолчанию.waitFor(), чтобы гарантировать корректное выполнение
тестов.isChecked() для
уверенности в правильности выполнения шагов, особенно когда состояние
элементов критично для дальнейшего выполнения теста.Playwright предоставляет гибкие и мощные инструменты для работы с чекбоксами и радио-кнопками, которые позволяют легко автоматизировать тестирование таких элементов, независимо от их сложности.