Como lidar com alertas e pop-ups em Selenium?

O que รฉ Alerta em Selenium?

An Alerta em Selenium รฉ uma pequena caixa de mensagem 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-up em Selenium e diferentes tipos de alertas encontrados em aplicativos da web Testes. Veremos tambรฉm como lidar com o Alert em Selenium WebDriver e saiba como aceitamos e rejeitamos o alerta dependendo dos tipos de alerta.

Tipos de alertas em Selenium

1) Simple Alert

A classe de alerta simples em Selenium exibe alguma informaรงรฃo ou aviso na tela.

Simple Alert

2) Prompt Alert

Esta Prompt Alert pede alguma entrada do usuรกrio e Selenium webdriver pode inserir o texto usando sendkeys(โ€entradaโ€ฆ.โ€œ).

Prompt Alert

3) Confirmation Alert

Este alerta de confirmaรงรฃo pede permissรฃo para realizar algum tipo de operaรงรฃo.

Confirmation Alert

Como lidar com alerta em Selenium webdriver

A interface de alerta fornece alguns mรฉtodos abaixo que sรฃo amplamente utilizados em Selenium Driver da Web.

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 a caixa de alerta.

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 Selenium'S .troque para() mรฉtodo.

Lidar com alerta em Selenium webdriver

Agora automatizamos o cenรกrio abaixo.

Neste cenรกrio, usaremos o site de demonstraรงรฃo Guru99 para ilustrar Selenium Tratamento de alertas.

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 em Selenium webdriver

Passo 3) Apรณs inserir o ID do cliente, clique no botรฃo โ€œEnviarโ€.

Lidar com alerta em Selenium webdriver

Passo 4) Rejeite/aceite o alerta.

Lidar com alerta em Selenium webdriver

Tratamento de alerta em Selenium Driver da Web

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 o alerta de confirmaรงรฃo exibido na tela e, assim, excluindo o ID do cliente do aplicativo.

Como lidar com a janela pop-up usando Selenium Driver da Web

Na automaรงรฃo, quando temos vรกrias janelas em qualquer aplicativo da 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 precisa retornar ร  janela principal, ou seja, ร  janela pai em Selenium. Veremos isso mais adiante no artigo com um exemplo.

In Selenium driver web existem mรฉtodos atravรฉs dos quais podemos manipular mรบltiplas 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 manuseio de janelas em Selenium, seguiremos as etapas abaixo:

Agora, automatizaremos o cenรกrio fornecido abaixo para ver como lidar com vรกrias janelas usando Selenium Driver da Web.

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 Driver da Web

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 Driver da Web

Passo 3) A janela Nova crianรงa รฉ aberta.

Uma nova janela รฉ aberta, peรงa ao usuรกrio para inserir o ID do e-mail e enviar a pรกgina.

Lidar com janela pop-up usando Selenium Driver da Web

Passo 4) Digite seu ID de e-mail e envie.

Lidar com janela pop-up usando Selenium Driver da Web

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

Lidar com janela pop-up usando Selenium Driver da Web

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 Driver da Web

  1. Mude para a janela pai.

Lidar com janela pop-up usando Selenium Driver da Web

Como lidar com vรกrios 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);				
    }
}		

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 em Selenium
Manipulaรงรฃo de mรบltiplas janelas em Selenium

Conclusรฃo

  • Definimos os tipos de alerta e os mostramos em uma captura de tela.
  • Demonstrado como lidar com o Alerta com Selenium WebDriver usando cenรกrio especรญfico.
  • Lidou com vรกrias janelas com Selenium WebDriver usando cenรกrio especรญfico.

Resuma esta postagem com: