Ответ
Да, Selenium может работать с различными типами всплывающих окон (popups), но подход зависит от их природы.
1. JavaScript Alert/Confirm/Prompt:
Используется Alert API:
Alert alert = driver.switchTo().alert();
alert.accept(); // Подтвердить (OK)
alert.dismiss(); // Отклонить (Cancel)
String alertText = alert.getText(); // Получить текст
2. Новое окно или вкладка браузера: Необходимо переключить контекст драйвера:
String originalWindow = driver.getWindowHandle();
// ... действие, открывающее новое окно ...
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(originalWindow)) {
driver.switchTo().window(handle);
break;
}
}
// Работаем в новом окне
driver.switchTo().window(originalWindow); // Возвращаемся
3. Модальные окна на основе HTML/CSS: С ними работают как с обычными элементами DOM:
WebElement closeButton = driver.findElement(By.cssSelector(".modal .close"));
closeButton.click();
4. Нативные диалоги ОС (загрузка/сохранение файла): Selenium не может управлять ими напрямую. Стандартное решение — избегать их появления, настраивая профиль браузера (например, для автоматической загрузки файлов в указанную папку).
Важно: Для надежности тестов всегда используйте явные ожидания (WebDriverWait) перед попыткой переключиться на всплывающее окно или взаимодействовать с ним.