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.
2) Prompt Alert
Esta Prompt Alert pede alguma entrada do usuรกrio e Selenium webdriver pode inserir o texto usando sendkeys(โentradaโฆ.โ).
3) Confirmation Alert
Este alerta de confirmaรงรฃo pede permissรฃo para realizar algum tipo de operaรงรฃo.
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.
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.
Passo 3) Apรณs inserir o ID do cliente, clique no botรฃo โEnviarโ.
Passo 4) Rejeite/aceite o alerta.
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
Passo 2) Clique no link โClique Aquiโ.
Quando o usuรกrio clica no link โClique Aquiโ, uma nova janela filho รฉ aberta.
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.
Passo 4) Digite seu ID de e-mail e envie.
Passo 5) Exiba as credenciais de acesso ao enviar a pรกgina.
Ao executar o cรณdigo, vocรช verรก que a janela filho estรก aberta em uma nova guia.
- Feche a janela Filho na qual as credenciais sรฃo exibidas.
- Mude para a janela pai.
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.

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.














