Selenium Alert & Обработка всплывающих окон: что делать?

Содержание:

Anonim

В этом руководстве мы узнаем, как обрабатывать всплывающие окна в Selenium и различные типы предупреждений, обнаруженные при тестировании веб-приложений. Мы также увидим, как обрабатывать оповещения в Selenium WebDriver, и узнаем, как мы принимаем и отклоняем оповещения в зависимости от типов оповещений.

В этом руководстве вы узнаете:

  • Что такое оповещение?
  • Как обрабатывать оповещения в Selenium WebDriver
  • Как обрабатывать всплывающее окно Selenium с помощью Webdriver

Что такое оповещение в селене?

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

Вот несколько предупреждений в типах Selenium:

1) Простое оповещение

Класс простых предупреждений в Selenium отображает некоторую информацию или предупреждение на экране.

2) Оперативное оповещение.

Это приглашение запрашивает ввод от пользователя, и веб-драйвер Selenium может вводить текст с помощью клавиш sendkeys ("input

…. ").

3) Уведомление о подтверждении.

Это подтверждающее предупреждение запрашивает разрешение на выполнение некоторого типа операции.

Как обрабатывать оповещения в Selenium WebDriver

Интерфейс предупреждений предоставляет следующие несколько методов, которые широко используются в Selenium Webdriver.

1) void dismiss () // Чтобы нажать кнопку «Отмена» в предупреждении.

driver.switchTo (). alert (). dismiss ();

2) void accept () // Чтобы нажать кнопку «ОК» предупреждения.

driver.switchTo (). предупреждение (). accept ();

3) String getText () // Для записи предупреждающего сообщения.

driver.switchTo (). alert (). getText (); 

4) void sendKeys (String stringToSend) // Для отправки некоторых данных в окно предупреждения.

driver.switchTo (). alert (). sendKeys ("Текст");

Вы можете увидеть, что отображается ряд методов оповещения, как показано на экране ниже, предложенном Eclipse.

Мы можем легко переключиться на оповещение из главного окна, используя метод Selenium .switchTo () .

Теперь автоматизируем приведенный ниже сценарий.

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

Шаг 1) Запустите веб-браузер и откройте сайт «http://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) выбрасывает NoAlertPresentException, InterruptedException {System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новый ChromeDriver ();// Обработка предупреждающих сообщенийdriver.get ("http://demo.guru99.com/test/delete_customer.php");driver.findElement (By.name ("cusid")). sendKeys ("53920");driver.findElement (By.name ("отправить")). submit ();// Переключение на оповещениеОповещение alert = driver.switchTo (). Alert ();// Захват предупреждающего сообщения.Строка alertMessage = driver.switchTo (). Alert (). GetText ();// Отображение предупреждающего сообщенияSystem.out.println (alertMessage);Thread.sleep (5000);// Принятие оповещенияalert.accept ();}}

Выход :

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

Как обрабатывать всплывающее окно Selenium с помощью Webdriver

При автоматизации, когда у нас есть несколько окон в любом веб-приложении, для выполнения операции может потребоваться переключить управление между несколькими окнами с одного на другое. После завершения операции он должен вернуться в главное окно, то есть в родительское окно в Selenium. Мы увидим это далее в статье на примере.

В веб-драйвере Selenium есть методы, с помощью которых мы можем обрабатывать несколько окон.

Driver.getWindowHandles ();

Чтобы обрабатывать все открытые окна веб-драйвером, мы можем использовать «Driver.getWindowHandles ()», а затем мы можем переключать окно из одного окна в другое в веб-приложении. Его возвращаемый тип - Iterator .

Driver.getWindowHandle ();

Когда сайт открывается, нам нужно обработать главное окно с помощью driver.getWindowHandle () . Это будет обрабатывать текущее окно, которое однозначно идентифицирует его в этом экземпляре драйвера. Его возвращаемый тип - String.

Для работы с окнами в Selenium мы выполним следующие шаги:

Теперь мы автоматизируем приведенный ниже сценарий, чтобы увидеть, как обрабатывать несколько окон с помощью Selenium Webdriver.

В этом сценарии мы будем использовать демонстрационный сайт «Guru99», чтобы проиллюстрировать работу с окнами.

Шаг 1) Запускаем сайт.

Запустите браузер и откройте сайт « http://demo.guru99.com/popup.php »

Шаг 2) Щелкните ссылку «Щелкните здесь».

Когда пользователь щелкает ссылку «Щелкните здесь», открывается новое дочернее окно.

Шаг 3) Откроется новое дочернее окно.

Откроется новое окно, попросите пользователя ввести идентификатор электронной почты и отправить страницу.

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

Шаг 5) Отобразите учетные данные для доступа при отправке страницы.

Когда вы выполните код, вы увидите, что дочернее окно открыто в новой вкладке.

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

Обработка нескольких окон в Selenium webdriver по приведенному выше сценарию.

import java.util.Iterator;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;открытый класс WindowHandle_Demo {public static void main (String [] args) выбрасывает InterruptedException {Драйвер WebDriver = новый FirefoxDriver ();// Запускаем сайт.driver.get ("http://demo.guru99.com/popup.php");driver.manage (). window (). maximize ();driver.findElement (By.xpath ("// * [содержит (@ href, 'popup.php')]")). click ();Строка MainWindow = driver.getWindowHandle ();// Для обработки всего нового открытого окна.Установите  s1 = driver.getWindowHandles ();Итератор  i1 = s1.iterator ();в то время как (i1.hasNext ()){Строка ChildWindow = i1.next ();если (! MainWindow.equalsIgnoreCase (ChildWindow)){// Переход к дочернему окнуdriver.switchTo (). window (ChildWindow);driver.findElement (By.name ("emailid")).sendKeys (" Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.");driver.findElement (By.name ("btnLogin")). click ();// Закрытие дочернего окна.driver.close ();}}// Переход к родительскому окну, т.е. главному окну.driver.switchTo (). window (MainWindow);}}

Выход:

Когда вы выполняете приведенный выше код, он запускает сайт и, щелкнув ссылку «Щелкните здесь», открывает дочернее окно в новой вкладке. Вы можете закрыть дочернее окно и переключиться на родительское окно после того, как операция будет полностью завершена. Следовательно, обработка более одного окна в приложении.

Работа с несколькими окнами в Selenium

Вывод:

  • Мы определили типы предупреждений и показали их на снимке экрана.
  • Продемонстрирована обработка предупреждений с помощью Selenium WebDriver с использованием определенного сценария.
  • Обработка нескольких окон с помощью Selenium WebDriver по определенному сценарию.