Sådan håndterer du advarsler og pop op-vinduer i Selenium?

Hvad er Alert i Selenium?

An Alarm ind Selenium er en lille beskedboks, der vises på skærmen for at give brugeren nogle oplysninger eller notifikationer. Det underretter brugeren med nogle specifikke oplysninger eller fejl, beder om tilladelse til at udføre visse opgaver, og det giver også advarselsmeddelelser.

I denne tutorial lærer vi, hvordan du håndterer pop-up i Selenium og forskellige typer advarsler fundet i webapplikationen Test. Vi vil også se, hvordan man håndterer Alert in Selenium WebDriver og lær, hvordan vi accepterer og afviser advarslen afhængigt af advarselstyperne.

Typer af advarsler i Selenium

1) Simple Alert

Den simple alarmklasse i Selenium viser nogle oplysninger eller advarsler på skærmen.

Simple Alert

2) Prompt Alert

Denne Prompt Alert spørger om nogle input fra brugeren og Selenium webdriver kan indtaste teksten ved hjælp af sendkeys(" input... ").

Prompt Alert

3) Confirmation Alert

Denne bekræftelsesalarm beder om tilladelse til at udføre en eller anden form for operation.

Confirmation Alert

Sådan håndteres Alert in Selenium webdriver

Alert interface giver nedenstående få metoder, som er meget udbredt i Selenium Webdriver.

1) void afskedig() // For at klikke på knappen 'Annuller' i advarslen.

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

2) void accept()// For at klikke på 'OK'-knappen i advarslen.

driver.switchTo().alert().accept();

3) Streng getText() // For at fange advarselsmeddelelsen.

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

4) void sendKeys(String stringToSend) // For at sende nogle data til advarselsboksen.

driver.switchTo().alert().sendKeys("Text");

Du kan se en række advarselsmetoder vises som vist på nedenstående skærm foreslået af Eclipse.

Vi kan nemt skifte til alarm fra hovedvinduet ved at bruge Selenium's .skifte til() fremgangsmåde.

Håndter Alert ind Selenium webdriver

Nu automatiserer vi nedenstående scenarie.

I dette scenarie vil vi bruge Guru99 demo site til at illustrere Selenium Alarmhåndtering.

Trin 1) Start webbrowseren og åbn webstedet https://demo.guru99.com/test/delete_customer.php

Trin 2) Indtast ethvert kunde-id.

Håndter Alert ind Selenium webdriver

Trin 3) Efter indtastning af kunde-id, klik på "Send"-knappen.

Håndter Alert ind Selenium webdriver

Trin 4) Afvis/accepter advarslen.

Håndter Alert ind Selenium webdriver

Håndtering af alarm ind 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();		
    }	

}
		

Output:

Når du udfører ovenstående kode, starter den webstedet. Prøv at slette kunde-id ved at håndtere en bekræftelsesalarm, der vises på skærmen, og derved slette kunde-id fra applikationen.

Sådan håndteres pop-up-vindue vha Selenium Webdriver

I automatisering, når vi har flere vinduer i en hvilken som helst webapplikation, skal aktiviteten muligvis skifte kontrol mellem flere vinduer fra det ene til det andet for at fuldføre handlingen. Efter afslutning af operationen skal den vende tilbage til hovedvinduet, dvs. forældrevinduet ind Selenium. Det vil vi se yderligere i artiklen med et eksempel.

In Selenium web-driver der er metoder, hvorigennem vi kan håndtere flere vinduer.

Driver.getWindowHandles();

For at håndtere alle åbne vinduer af webdriver, kan vi bruge "Driver.getWindowHandles()", og så kan vi skifte vindue fra et vindue til et andet i en webapplikation. Dens returtype er Iterator .

Driver.getWindowHandle();

Når siden åbner, skal vi håndtere hovedvinduet ved driver.getWindowHandle(). Dette vil håndtere det aktuelle vindue, der unikt identificerer det i denne driverforekomst. Dens returtype er String.

Til vindueshåndtering i Selenium, vil vi følge nedenstående trin:

Nu vil vi automatisere nedenstående scenarie for at se, hvordan man håndterer flere vinduer ved hjælp af Selenium Webdriver.

I dette scenarie vil vi bruge "Guru99"-demosiden til at illustrere vindueshåndtering.

Trin 1) Start webstedet.

Start browseren og åbn webstedet https://demo.guru99.com/popup.php

Håndter pop op-vindue vha Selenium Webdriver

Trin 2) Klik på linket "Klik her".

Når brugeren klikker på " Klik her "-linket, åbnes et nyt underordnet vindue.

Håndter pop op-vindue vha Selenium Webdriver

Trin 3) Nyt børnevindue åbnes.

Et nyt vindue åbnes, bed brugeren om at indtaste e-mail-id og indsende siden.

Håndter pop op-vindue vha Selenium Webdriver

Trin 4) Indtast dit e-mail-id og send.

Håndter pop op-vindue vha Selenium Webdriver

Trin 5) Vis adgangsoplysningerne ved indsendelse af siden.

Håndter pop op-vindue vha Selenium Webdriver

Når du udfører koden, vil du se underordnet vindue er åbent i ny fane.

  1. Luk vinduet underordnet, hvor legitimationsoplysningerne vises.

Håndter pop op-vindue vha Selenium Webdriver

  1. Skift til forældrevinduet.

Håndter pop op-vindue vha Selenium Webdriver

Sådan håndteres flere 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);				
    }
}		

Output:

Når du udfører ovenstående kode, starter den webstedet, og når du klikker på linket "Klik her", åbner det et underordnet vindue i en ny fane. Du kan lukke det underordnede vindue og skifte til det overordnede vindue, når handlingen er færdig. Derfor håndterer du mere end ét vindue i applikationen.

Håndtering af flere vinduer Selenium
Håndtering af flere vinduer Selenium

Konklusion

  • Vi definerede typer af advarsler og viste dem med et skærmbillede.
  • Demonstreret håndtering af alarmen med Selenium WebDriver ved hjælp af et bestemt scenarie.
  • Håndterede flere vinduer med Selenium WebDriver ved hjælp af et bestemt scenarie.