Hur hantera Selenium Varningar och popup-fönster?

Vad är Alert i Selenium?

An Varning in Selenium är en liten meddelanderuta som visas på skärmen för att ge användaren lite information eller meddelande. Det meddelar användaren med viss specifik information eller fel, ber om tillåtelse att utföra vissa uppgifter och det ger också varningsmeddelanden.

I den här handledningen kommer vi att lära oss hur man hanterar popup-fönster Selenium och olika typer av varningar som finns i webbapplikationer Testning. Vi kommer också att se hur man hanterar Alert in Selenium WebDriver och lär dig hur vi accepterar och avvisar varningen beroende på varningstyperna.

Typer av varningar i Selenium

1) Simple Alert

Den enkla varningsklassen i Selenium visar viss information eller varning på skärmen.

Simple Alert

2) Prompt Alert

Denna Prompt Alert frågar lite input från användaren och Selenium webdriver kan skriva in texten med sendkeys(” input…. “).

Prompt Alert

3) Confirmation Alert

Denna bekräftelsevarning ber om tillåtelse att utföra någon typ av operation.

Confirmation Alert

Hur man hanterar Alert in Selenium webbdrivrutin

Alert-gränssnitt tillhandahåller nedan några metoder som används ofta i Selenium Webdriver.

1) void avvisa() // För att klicka på "Avbryt"-knappen för varningen.

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

2) void acceptera()// För att klicka på "OK"-knappen för varningen.

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

3) Sträng getText() // För att fånga varningsmeddelandet.

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

4) void sendKeys(String stringToSend) // För att skicka lite data till varningsrutan.

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

Du kan se att ett antal varningsmetoder visas som visas på skärmen nedan som föreslås av Eclipse.

Vi kan enkelt växla till larm från huvudfönstret genom att använda SeleniumÄr .byta till() metod.

Hantera Alert in Selenium webbdrivrutin

Nu automatiserar vi scenariot nedan.

I det här scenariot kommer vi att använda Guru99-demosidan för att illustrera Selenium Varningshantering.

Steg 1) Starta webbläsaren och öppna webbplatsen https://demo.guru99.com/test/delete_customer.php

Steg 2) Ange valfritt kund-id.

Hantera Alert in Selenium webbdrivrutin

Steg 3) När du har angett kund-ID klickar du på knappen "Skicka".

Hantera Alert in Selenium webbdrivrutin

Steg 4) Avvisa/acceptera varningen.

Hantera Alert in Selenium webbdrivrutin

Hanteringsvarning in 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();		
    }	

}
		

Produktion:

När du kör ovanstående kod startar den webbplatsen. Försök att radera kund-ID genom att hantera en bekräftelselarm som visas på skärmen och därmed radera kund-id från applikationen.

Hur man hanterar popup-fönster med Selenium Webdriver

I automatisering, när vi har flera fönster i en webbapplikation, kan aktiviteten behöva byta kontroll mellan flera fönster från ett till ett annat för att slutföra operationen. Efter avslutad operation måste den återgå till huvudfönstret, dvs föräldrafönster in Selenium. Vi kommer att se detta vidare i artikeln med ett exempel.

In Selenium webbdrivrutin det finns metoder genom vilka vi kan hantera flera fönster.

Driver.getWindowHandles();

För att hantera alla öppna fönster av webbdrivrutinen kan vi använda "Driver.getWindowHandles()" och sedan kan vi byta fönster från ett fönster till ett annat i en webbapplikation. Dess returtyp är Iterator .

Driver.getWindowHandle();

När sidan öppnas måste vi hantera huvudfönstret genom att driver.getWindowHandle(). Detta kommer att hantera det aktuella fönstret som unikt identifierar det i den här drivrutinsinstansen. Dess returtyp är String.

För fönsterhantering i Selenium, kommer vi att följa stegen nedan:

Nu kommer vi att automatisera scenariot nedan för att se hur man hanterar flera fönster med hjälp av Selenium Webdriver.

I det här scenariot kommer vi att använda "Guru99" demosida för att illustrera fönsterhantering.

Steg 1) Starta webbplatsen.

Starta webbläsaren och öppna webbplatsen https://demo.guru99.com/popup.php

Hantera popup-fönster med Selenium Webdriver

Steg 2) Klicka på länken "Klicka här".

När användaren klickar på länken " Klicka här " öppnas ett nytt barnfönster.

Hantera popup-fönster med Selenium Webdriver

Steg 3) Nytt barnfönster öppnas.

Ett nytt fönster öppnas, be användaren att ange e-post-ID och skicka in sidan.

Hantera popup-fönster med Selenium Webdriver

Steg 4) Ange ditt e-post-ID och skicka.

Hantera popup-fönster med Selenium Webdriver

Steg 5) Visa åtkomstuppgifterna när du skickar in sidan.

Hantera popup-fönster med Selenium Webdriver

När du kör koden kommer du att se att det underordnade fönstret är öppet i ny flik.

  1. Stäng fönstret underordnat där autentiseringsuppgifterna visas.

Hantera popup-fönster med Selenium Webdriver

  1. Växla till föräldrafönstret.

Hantera popup-fönster med Selenium Webdriver

Hur man hanterar flera 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);				
    }
}		

Produktion:

När du kör ovanstående kod startar den webbplatsen och när du klickar på länken "Klicka här" öppnas ett underordnat fönster i en ny flik. Du kan stänga det underordnade fönstret och byta till det överordnade fönstret när operationen är helt klar. Hanterar därför mer än ett fönster i applikationen.

Flera fönsterhantering in Selenium
Flera fönsterhantering in Selenium

Slutsats

  • Vi definierade varningstyperna och visade dem med en skärmdump.
  • Demonstrerad hantering av varningen med Selenium WebDriver som använder ett särskilt scenario.
  • Hanterade flera fönster med Selenium WebDriver som använder ett särskilt scenario.

Läs mer Readmore