Alerta Selenium e tratamento de janelas pop-up: como lidar?

O que é Alerta no Selênio?

An Alerta em Selênio é uma pequena mensagem box que aparece na tela para fornecer ao usuário alguma informação ou notificação. Notifica o usuário com alguma informação ou erro específico, pede permissão para realizar determinadas tarefas e também fornece mensagens de aviso.

Neste tutorial, aprenderemos como lidar com pop-ups no Selenium e diferentes tipos de alertas encontrados em aplicações web ensaio. Também veremos como lidar com alertas no Selenium WebDriver e aprender como aceitamos e rejeitamos o alerta dependendo dos tipos de alerta.

Tipos de alertas em Selenium

1) Simple Alert

A simple alert class no Selenium exibe algumas informações ou avisos na tela.

Simple Alert

2) Prompt Alert

Esta Prompt Alert pede alguma entrada do usuário e o Selenium webdriver pode inserir o texto usando sendkeys(” input…. “).

Prompt Alert

3) Confirmation Alert

Esta confirmation alert pede permissão para fazer algum tipo de operação.

Confirmation Alert

Como lidar com alertas no Selenium WebDriver

A interface de alerta fornece alguns métodos abaixo que são amplamente utilizados em Selenium WebdriverName.

1) anular dispensar() // Para clicar no botão 'Cancelar' do alerta.

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

2) nulo aceitar()// Para clicar no botão 'OK' do alerta.

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

3) String getText() // Para capturar a mensagem de alerta.

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

4) void sendKeys(String stringToSend) // Para enviar alguns dados para alerta box.

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

Você pode ver vários métodos de alerta exibidos conforme mostrado na tela abaixo sugerida por Eclipse.

Podemos facilmente mudar para alerta na janela principal usando o Selenium .troque para() método.

Lidar com alerta no Selenium WebDriver

Agora automatizamos o cenário abaixo.

Neste cenário, usaremos o site de demonstração Guru99 para ilustrar o tratamento do Alerta Selenium.

Passo 1) Inicie o navegador da web e abra o site https://demo.guru99.com/test/delete_customer.php

Passo 2) Insira qualquer ID de cliente.

Lidar com alerta no Selenium WebDriver

Passo 3) Após inserir o ID do cliente, clique no botão “Enviar”.

Lidar com alerta no Selenium WebDriver

Passo 4) Rejeite/aceite o alerta.

Lidar com alerta no Selenium WebDriver

Tratamento de alerta no 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();		
    }	

}
		

Saída:

Quando você executa o código acima, ele inicia o site. Tente excluir o ID do cliente manipulando confirmation alert que é exibido na tela e, assim, excluindo o ID do cliente do aplicativo.

Como lidar com janelas pop-up usando Selenium Webdriver

Na automação, quando temos múltiplas janelas em qualquer aplicação web, a atividade pode precisar alternar o controle entre várias janelas de uma para outra para concluir a operação. Após a conclusão da operação, ela deve retornar à janela principal, ou seja, janela pai no Selenium. Veremos isso mais adiante no artigo com um exemplo.

No driver web Selenium existem métodos através dos quais podemos lidar com várias janelas.

Driver.getWindowHandles();

Para lidar com todas as janelas abertas pelo driver web, podemos usar “Driver.getWindowHandles()” e então podemos mudar a janela de uma janela para outra em uma aplicação web. Seu tipo de retorno é Iterator .

Driver.getWindowHandle();

Quando o site abrir, precisamos manipular a janela principal driver.getWindowHandle(). Isso tratará a janela atual que a identifica exclusivamente nesta instância do driver. Seu tipo de retorno é String.

Para manipulação de janelas no Selenium, seguiremos as etapas abaixo:

Agora, automatizaremos o cenário abaixo para ver como lidar com várias janelas usando Selenium Webdriver.

Neste cenário, usaremos o site de demonstração “Guru99” para ilustrar o manuseio da janela.

Passo 1) Inicie o site.

Inicie o navegador e abra o site https://demo.guru99.com/popup.php

Lidar com janela pop-up usando Selenium Webdriver

Passo 2) Clique no link “Clique Aqui”.

Quando o usuário clica no link “Clique Aqui”, uma nova janela filho é aberta.

Lidar com janela pop-up usando Selenium Webdriver

Passo 3) A janela Nova criança é aberta.

Uma nova janela é aberta, peça ao usuário para inserir email id e envie a página.

Lidar com janela pop-up usando Selenium Webdriver

Passo 4) Digite seu email Identifique e envie.

Lidar com janela pop-up usando Selenium Webdriver

Passo 5) Exiba as credenciais de acesso ao enviar a página.

Lidar com janela pop-up usando Selenium Webdriver

Ao executar o código, você verá que a janela filho está aberta em uma nova guia.

  1. Feche a janela Filho na qual as credenciais são exibidas.

Lidar com janela pop-up usando Selenium Webdriver

  1. Mude para a janela pai.

Lidar com janela pop-up usando Selenium Webdriver

Como lidar com várias janelas no 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);				
    }
}		

Saída:

Ao executar o código acima, ele abre o site e ao clicar no link “Clique aqui”, abre uma janela filha em uma nova aba. Você pode fechar a janela filho e mudar para a janela pai quando a operação for concluída. Conseqüentemente, manipulando mais de uma janela no aplicativo.

Manipulação de múltiplas janelas no Selenium
Manipulação de múltiplas janelas no Selenium

Conclusão

  • Definimos os tipos de alerta e os mostramos em uma captura de tela.
  • Demonstração do tratamento do alerta com Selenium WebDriver usando um cenário específico.
  • Lidou com várias janelas com Selenium WebDriver usando um cenário específico.