Как да се справяме с предупреждения и изскачащи прозорци в Selenium?

В какво е Alert Selenium?

An Сигнал в Selenium е малко поле за съобщения, което се появява на екрана, за да даде на потребителя информация или известие. Той уведомява потребителя с някаква конкретна информация или грешка, иска разрешение за изпълнение на определени задачи и също така предоставя предупредителни съобщения.

В този урок ще научим как да управляваме изскачащи прозорци Selenium и различни типове сигнали, намерени в уеб приложението Тестване. Ще видим също как да управляваме Alert in Selenium WebDriver и научете как приемаме и отхвърляме предупреждението в зависимост от типовете предупреждения.

Видове сигнали в Selenium

1) Simple Alert

Простият клас за предупреждение в Selenium показва някаква информация или предупреждение на екрана.

Simple Alert

2) Prompt Alert

Това Prompt Alert иска информация от потребителя и Selenium webdriver може да въведе текста с помощта на sendkeys(" input.... ").

Prompt Alert

3) Confirmation Alert

Този сигнал за потвърждение иска разрешение за извършване на някакъв вид операция.

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() метод.

Обработка на предупреждение в Selenium уебдрайвер

Сега автоматизираме дадения по-долу сценарий.

В този сценарий ще използваме демо сайт Guru99 за илюстрация Selenium Обработка на сигнали.

Стъпка 1) Стартирайте уеб браузъра и отворете сайта https://demo.guru99.com/test/delete_customer.php

Стъпка 2) Въведете произволен идентификатор на клиент.

Обработка на предупреждение в Selenium уебдрайвер

Стъпка 3) След като въведете идентификатора на клиента, щракнете върху бутона „Изпращане“.

Обработка на предупреждение в Selenium уебдрайвер

Стъпка 4) Отхвърлете/приемете предупреждението.

Обработка на предупреждение в Selenium уебдрайвер

Обработка на предупреждение в 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

Използване на изскачащи прозорци Selenium Уебдрайвер

Стъпка 2) Кликнете върху връзката „Щракнете тук“.

Когато потребителят щракне върху връзката „Щракнете тук“, се отваря нов дъщерен прозорец.

Използване на изскачащи прозорци Selenium Уебдрайвер

Стъпка 3) Отваря се нов прозорец за дете.

Отваря се нов прозорец, помолете потребителя да въведе имейл адрес и да изпрати страницата.

Използване на изскачащи прозорци Selenium Уебдрайвер

Стъпка 4) Въведете вашия имейл ID и изпратете.

Използване на изскачащи прозорци Selenium Уебдрайвер

Стъпка 5) Покажете идентификационните данни за достъп при изпращане на страницата.

Използване на изскачащи прозорци Selenium Уебдрайвер

Когато изпълните кода, ще видите, че дъщерният прозорец е отворен в нов раздел.

  1. Затворете прозореца Child, в който се показват идентификационните данни.

Използване на изскачащи прозорци Selenium Уебдрайвер

  1. Превключете към родителския прозорец.

Използване на изскачащи прозорци Selenium Уебдрайвер

Как да се справим с множество 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
Работа с множество прозорци Selenium

Заключение

  • Ние дефинирахме типовете сигнали и ги показахме с екранна снимка.
  • Демонстрирано боравене с предупреждението Selenium WebDriver използва конкретен сценарий.
  • Обработва няколко прозореца с Selenium WebDriver използва конкретен сценарий.