Как да се справяме с предупреждения и изскачащи прозорци в Selenium?
В какво е Alert Selenium?
An Сигнал в Selenium е малко поле за съобщения, което се появява на екрана, за да даде на потребителя информация или известие. Той уведомява потребителя с някаква конкретна информация или грешка, иска разрешение за изпълнение на определени задачи и също така предоставя предупредителни съобщения.
В този урок ще научим как да управляваме изскачащи прозорци Selenium и различни типове сигнали, намерени в уеб приложението Тестване. Ще видим също как да управляваме Alert in Selenium WebDriver и научете как приемаме и отхвърляме предупреждението в зависимост от типовете предупреждения.
Видове сигнали в Selenium
1) Simple Alert
Простият клас за предупреждение в Selenium показва някаква информация или предупреждение на екрана.
2) Prompt Alert
Това Prompt Alert иска информация от потребителя и Selenium webdriver може да въведе текста с помощта на sendkeys(" input.... ").
3) Confirmation Alert
Този сигнал за потвърждение иска разрешение за извършване на някакъв вид операция.
Как да се справим с Alert in Selenium уебдрайвер
Интерфейсът за предупреждение предоставя следните няколко метода, които се използват широко в Selenium Уебдрайвер.
1) void dismiss() // За да щракнете върху бутона „Отказ“ на предупреждението.
driver.switchTo().alert().dismiss();
2) невалиден прием ()// За да щракнете върху бутона „OK“ на предупреждението.
driver.switchTo().alert().accept();
3) Низ getText() // За улавяне на предупредителното съобщение.
driver.switchTo().alert().getText();
4) void sendKeys (низ stringToSend) // За да изпратите някои данни в полето за предупреждение.
driver.switchTo().alert().sendKeys("Text");
Можете да видите, че се показват редица методи за предупреждение, както е показано на екрана по-долу, предложен от Eclipse.
Можем лесно да превключим към предупреждение от главния прозорец, като използваме SeleniumЕ .switchTo() метод.
Сега автоматизираме дадения по-долу сценарий.
В този сценарий ще използваме демо сайт Guru99 за илюстрация Selenium Обработка на сигнали.
Стъпка 1) Стартирайте уеб браузъра и отворете сайта https://demo.guru99.com/test/delete_customer.php
Стъпка 2) Въведете произволен идентификатор на клиент.
Стъпка 3) След като въведете идентификатора на клиента, щракнете върху бутона „Изпращане“.
Стъпка 4) Отхвърлете/приемете предупреждението.
Обработка на предупреждение в Selenium Уебдрайвер
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 Уебдрайвер
При автоматизацията, когато имаме няколко прозореца във всяко уеб приложение, дейността може да се наложи да превключи контрола между няколко прозореца от един на друг, за да завърши операцията. След приключване на операцията, той трябва да се върне към главния прозорец, т.е. родителския прозорец Selenium. Това ще видим по-нататък в статията с пример.
In Selenium уеб драйвер има методи, чрез които можем да обработваме множество прозорци.
Driver.getWindowHandles();
За да обработваме всички отворени прозорци от уеб драйвер, можем да използваме „Driver.getWindowHandles()“ и след това можем да превключваме прозорец от един прозорец на друг в уеб приложение. Неговият тип на връщане е Iterator .
Driver.getWindowHandle();
Когато сайтът се отвори, трябва да обработим главния прозорец от driver.getWindowHandle(). Това ще обработи текущия прозорец, който го идентифицира уникално в този екземпляр на драйвера. Неговият тип на връщане е String.
За обработка на прозорци в Selenium, ще следваме стъпките по-долу:
Сега ще автоматизираме дадения по-долу сценарий, за да видим как да обработваме множество прозорци, използвайки Selenium Уебдрайвер.
В този сценарий ще използваме демо сайт „Guru99“, за да илюстрираме обработката на прозорци.
Стъпка 1) Стартирайте сайта.
Стартирайте браузъра и отворете сайта https://demo.guru99.com/popup.php
Стъпка 2) Кликнете върху връзката „Щракнете тук“.
Когато потребителят щракне върху връзката „Щракнете тук“, се отваря нов дъщерен прозорец.
Стъпка 3) Отваря се нов прозорец за дете.
Отваря се нов прозорец, помолете потребителя да въведе имейл адрес и да изпрати страницата.
Стъпка 4) Въведете вашия имейл ID и изпратете.
Стъпка 5) Покажете идентификационните данни за достъп при изпращане на страницата.
Когато изпълните кода, ще видите, че дъщерният прозорец е отворен в нов раздел.
- Затворете прозореца Child, в който се показват идентификационните данни.
- Превключете към родителския прозорец.
Как да се справим с множество Windows in 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); } }
Изход:
Когато изпълните горния код, той стартира сайта и при щракване върху връзката „Щракнете тук“ отваря дъщерен прозорец в нов раздел. Можете да затворите дъщерния прозорец и да превключите към родителския прозорец, след като операцията приключи напълно. Следователно обработката на повече от един прозорец в приложението.
Заключение
- Ние дефинирахме типовете сигнали и ги показахме с екранна снимка.
- Демонстрирано боравене с предупреждението Selenium WebDriver използва конкретен сценарий.
- Обработва няколко прозореца с Selenium WebDriver използва конкретен сценарий.