Hvordan å takle Selenium Varsler og popup-vinduer?

Hva er Alert i Selenium?

An Varsle inn Selenium er en liten meldingsboks som vises på skjermen for å gi brukeren informasjon eller varsel. Den varsler brukeren med noen spesifikk informasjon eller feil, ber om tillatelse til å utføre visse oppgaver, og den gir også advarselsmeldinger.

I denne opplæringen lærer vi hvordan du håndterer popup-vinduer Selenium og ulike typer varsler som finnes i nettapplikasjoner Testing. Vi vil også se hvordan du håndterer Alert in Selenium WebDriver og lær hvordan vi godtar og avviser varselet avhengig av varslingstypene.

Typer varsler i Selenium

1) Simple Alert

Den enkle varslingsklassen i Selenium viser informasjon eller advarsel på skjermen.

Simple Alert

2) Prompt Alert

Dette Prompt Alert ber om noen innspill fra brukeren og Selenium webdriver kan skrive inn teksten ved å bruke sendkeys(” input…. “).

Prompt Alert

3) Confirmation Alert

Dette bekreftelsesvarslet ber om tillatelse til å utføre en eller annen type operasjon.

Confirmation Alert

Hvordan håndtere Alert in Selenium webdriver

Varslingsgrensesnitt gir noen få metoder nedenfor som er mye brukt i Selenium Webdriver.

1) void avvis() // For å klikke på 'Avbryt'-knappen i varselet.

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

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

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

3) String getText() // For å fange opp varselmeldingen.

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

4) void sendKeys(String stringToSend) // For å sende noen data til varslingsboksen.

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

Du kan se en rekke varslingsmetoder vises som vist på skjermen nedenfor foreslått av Eclipse.

Vi kan enkelt bytte til varsling fra hovedvinduet ved å bruke Selenium'S .switchTo() metoden.

Håndter varselet inn Selenium webdriver

Nå automatiserer vi scenariet nedenfor.

I dette scenariet vil vi bruke Guru99 demoside for å illustrere Selenium Varslingshåndtering.

Trinn 1) Start nettleseren og åpne siden https://demo.guru99.com/test/delete_customer.php

Trinn 2) Skriv inn en hvilken som helst kunde-ID.

Håndter varselet inn Selenium webdriver

Trinn 3) Etter å ha angitt kunde-ID, klikk på "Send"-knappen.

Håndter varselet inn Selenium webdriver

Trinn 4) Avvis/godta varselet.

Håndter varselet inn Selenium webdriver

Håndteringsvarsling inn 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();		
    }	

}
		

Utgang:

Når du kjører koden ovenfor, starter den nettstedet. Prøv å slette kunde-ID ved å håndtere bekreftelsesvarsling som vises på skjermen, og dermed slette kunde-ID fra applikasjonen.

Hvordan håndtere popup-vindu ved hjelp av Selenium Webdriver

I automatisering, når vi har flere vinduer i en nettapplikasjon, kan aktiviteten trenge å bytte kontroll mellom flere vinduer fra ett til et annet for å fullføre operasjonen. Etter at operasjonen er fullført, må den gå tilbake til hovedvinduet, dvs. foreldrevinduet Selenium. Vi vil se dette videre i artikkelen med et eksempel.

In Selenium webdriver er det metoder som vi kan håndtere flere vinduer gjennom.

Driver.getWindowHandles();

For å håndtere alle åpne vinduer av nettdriver, kan vi bruke "Driver.getWindowHandles()" og deretter kan vi bytte vindu fra ett vindu til et annet i en nettapplikasjon. Returtypen er Iterator .

Driver.getWindowHandle();

Når siden åpner, må vi håndtere hovedvinduet ved å driver.getWindowHandle(). Dette vil håndtere det gjeldende vinduet som unikt identifiserer det i denne driverforekomsten. Returtypen er String.

For vindushåndtering i Selenium, vil vi følge trinnene nedenfor:

Nå vil vi automatisere scenariet nedenfor for å se hvordan du håndterer flere vinduer ved å bruke Selenium Webdriver.

I dette scenariet vil vi bruke "Guru99" demoside for å illustrere vindushåndtering.

Trinn 1) Start nettstedet.

Start nettleseren og åpne siden https://demo.guru99.com/popup.php

Håndter popup-vindu ved hjelp av Selenium Webdriver

Trinn 2) Klikk på linken "Klikk her".

Når brukeren klikker på " Klikk her "-koblingen, åpnes et nytt underordnet vindu.

Håndter popup-vindu ved hjelp av Selenium Webdriver

Trinn 3) Nytt barn-vindu åpnes.

Et nytt vindu åpnes, be brukeren skrive inn e-post-ID og sende inn siden.

Håndter popup-vindu ved hjelp av Selenium Webdriver

Trinn 4) Skriv inn e-post-ID og send inn.

Håndter popup-vindu ved hjelp av Selenium Webdriver

Trinn 5) Vis tilgangsinformasjonen når du sender inn siden.

Håndter popup-vindu ved hjelp av Selenium Webdriver

Når du kjører koden, vil du se at underordnet vinduet er åpent i ny fane.

  1. Lukk underordnet vinduet der legitimasjonen vises.

Håndter popup-vindu ved hjelp av Selenium Webdriver

  1. Bytt til foreldrevinduet.

Håndter popup-vindu ved hjelp av Selenium Webdriver

Hvordan håndtere 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);				
    }
}		

Utgang:

Når du utfører koden ovenfor, starter den nettstedet, og ved å klikke på lenken "Klikk her", åpnes et underordnet vindu i en ny fane. Du kan lukke barnevinduet og bytte til overordnet vinduet når operasjonen er fullført. Håndterer derfor mer enn ett vindu i applikasjonen.

Håndtering av flere vinduer Selenium
Håndtering av flere vinduer Selenium

Konklusjon

  • Vi definerte varslingstypene og viste dem med et skjermbilde.
  • Demonstrert håndtering av varselet med Selenium WebDriver som bruker et bestemt scenario.
  • Håndterte flere vinduer med Selenium WebDriver som bruker et bestemt scenario.

Les mer Readmore