Содержание:
- Что такое оповещение в Selenium?
- Типы оповещений в Selenium
- Как обрабатывать оповещения в Selenium WebDriver
- Как обработать всплывающее окно с помощью Selenium Webdriver
- Как работать с несколькими окнами в Selenium
Что такое оповещение в Selenium?
Оповещение в Selenium — это небольшое окно с сообщением, которое появляется на экране и предоставляет пользователю некоторую информацию. Оно уведомляет пользователя о какой-либо конкретной ситуации или ошибке, запрашивает разрешение на выполнение определенных задач, а также предоставляет предупреждающие сообщения.
В этом пособии мы узнаем, как обрабатывать всплывающие окна в Selenium и различные типы оповещений, возникающие при тестировании веб-приложений. Мы также рассмотрим, как обрабатывать оповещения в Selenium WebDriver, и изучим, как принимать и отклонять оповещения в зависимости от их типов.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Типы оповещений в Selenium
1. Простое оповещение
Простой класс оповещений в Selenium отображает на экране некоторую информацию или предупреждение.

2. Оперативное оповещение
Это уведомление запрашивает ввод данных от пользователя, и в Selenium Webdriver можно ввести текст с помощью sendkeys(» input….»).

3. Оповещение о подтверждении
Это подтверждающее сообщение запрашивает разрешение на выполнение какой-либо операции.

Как обрабатывать предупреждения в Selenium WebDriver
Интерфейс оповещений предоставляет следующие несколько методов, которые широко используются в Selenium Webdriver.
1. void dismiss() // Для нажатия на кнопку ‘Отмена’ в оповещении.
driver.switchTo().alert().dismiss();
2. void accept()// Для нажатия на кнопку ‘OK’ в оповещении.
driver.switchTo().alert().accept();
3. String getText() // Для захвата предупреждающего сообщения.
driver.switchTo().alert().getText();
4. void sendKeys(String stringToSend) // Для отправки некоторых данных в окно оповещения.
driver.switchTo().alert().sendKeys("Text");
На экране отображается несколько способов оповещения, предложенных Eclipse.
Мы можем легко переключиться на оповещение из главного окна, используя метод Selenium .switchTo().

Сейчас мы автоматизируем приведенный ниже сценарий.
В данном сценарии мы будем использовать демо-сайт Guru99 для иллюстрации работы с оповещениями Selenium.
Шаг 1. Запустите веб-браузер и откройте сайт https://demo.guru99.com/test/delete_customer.php.
Шаг 2. Введите любой идентификатор клиента.

Шаг 3. После ввода идентификатора клиента нажмите на кнопку «Отправить».

Шаг 4. Нажмите отклонить/принять оповещение.

Обработка предупреждений в Selenium Webdriver
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;
public class AlertDemo {
public static void main(String[] args) throws NoAlertPresentException,InterruptedException {
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
// Alert Message handling
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switching to Alert
Alert alert = driver.switchTo().alert();
// Capturing alert message.
String alertMessage= driver.switchTo().alert().getText();
// Displaying alert message
System.out.println(alertMessage);
Thread.sleep(5000);
// Accepting alert
alert.accept();
}
}
Вывод:
При выполнении приведенного выше кода происходит запуск сайта. Попробуйте удалить идентификатор клиента, обработав уведомление о подтверждении, которое появится на экране, и тем самым удалив идентификатор клиента из приложения.
Как обработать всплывающее окно с помощью Selenium Webdriver
В автоматизации, когда у нас есть несколько окон в любом веб-приложении, действию может потребоваться переключить управление между несколькими окнами с одного на другое, чтобы завершить операцию. После завершения операции оно должно вернуться в главное, то есть родительское окно в Selenium. Далее в статье мы рассмотрим это на примере.
В Selenium Webdriver есть методы, с помощью которых мы можем работать с несколькими окнами.
Driver.getWindowHandles();
Для обработки всех открытых окон в Selenium Webdriver можно использовать «Driver.getWindowHandles()«, после чего в веб-приложении можно переключаться с одного окна на другое. Возвращаемый тип — Iterator. Для обработки всех открытых окон с помощью Webdriver можно использовать «Driver.getWindowHandles()«, после чего в веб-приложении можно переключаться с одного окна на другое. Возвращаемый тип — Iterator<String>.
Driver.getWindowHandle();
При открытии сайта нам необходимо обработать главное окно с помощью driver.getWindowHandle(). Эта функция будет обрабатывать текущее окно, которое однозначно идентифицирует его в данном экземпляре драйвера. Возвращаемый тип — String.
Теперь мы автоматизируем приведенный ниже сценарий, чтобы посмотреть, как работать с несколькими окнами с помощью Selenium Webdriver.
В данном сценарии для иллюстрации работы с окнами мы будем использовать демонстрационный сайт «Guru99».
Для обработки окон в Selenium мы выполним следующие действия:
Шаг 1. Запуск сайта.
Запустите браузер и откройте сайт https://demo.guru99.com/popup.php.

Шаг 2. Нажмите на ссылку «Click Here».
Когда пользователь щелкает на ссылке «Click Here», открывается новое дочернее окно.

Шаг 3. Откроется новое дочернее окно.
Откроется новое окно, в котором пользователю будет предложено ввести идентификатор электронной почты и отправить страницу.

Шаг 4. Введите свой идентификатор электронной почты и отправьте сообщение.

Шаг 5. Отображение учетных данных доступа при отправке страницы.

При выполнении кода вы увидите, что дочернее окно открыто в новой вкладке.
- Закройте дочернее окно, в котором отображаются учетные данные.

- Переключитесь на родительское окно.

Как работать с несколькими окнами в Selenium
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandle_Demo {
public static void main(String[] args) throws InterruptedException {
WebDriver driver=new FirefoxDriver();
//Launching the site.
driver.get("https://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();
String MainWindow=driver.getWindowHandle();
// To handle all new opened window.
Set<String> s1=driver.getWindowHandles();
Iterator<String> i1=s1.iterator();
while(i1.hasNext())
{
String ChildWindow=i1.next();
if(!MainWindow.equalsIgnoreCase(ChildWindow))
{
// Switching to Child window
driver.switchTo().window(ChildWindow);
driver.findElement(By.name("emailid"))
.sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Closing the Child Window.
driver.close();
}
}
// Switching to Parent window i.e Main Window.
driver.switchTo().window(MainWindow);
}
}
Выход:
При выполнении приведенного выше кода происходит запуск сайта, а при нажатии на ссылку «Click here» открывается дочернее окно в новой вкладке. Дочернее окно можно закрыть, а после завершения операции переключиться на родительское окно. Таким образом, в приложении можно работать с несколькими окнами.

Работа с несколькими окнами в Selenium
Заключение:
- Мы определили типы оповещений и показали их на экране.
- Продемонстрировали работу с оповещениями с помощью Selenium WebDriver на примере конкретного сценария.
- Проверили работу с несколькими окнами с помощью Selenium WebDriver по определенному сценарию.
Перевод статьи «Selenium Alert & Popup Window Handling: How to Handle?».
