Como lidar com alertas e pop-ups em Selenium?
โก Resumo Inteligente
Alertas e pop-ups em Selenium estรฃo localizadas JavaDiรกlogos de script e janelas filhas que bloqueiam o fluxo de automaรงรฃo. Este artigo explica como identificar alertas simples, de aviso e de confirmaรงรฃo, alternar para eles com o WebDriver e gerenciar vรกrias janelas usando getWindowHandles().

O que รฉ um alerta em Selenium?
An Alerta em Selenium รฉ um pequeno JavaCaixa de diรกlogo de script que aparece na tela para fornecer informaรงรตes ou notificaรงรตes ao usuรกrio. Ela pode confirmar uma aรงรฃo especรญfica, solicitar permissรฃo para executar uma operaรงรฃo ou exibir uma mensagem de aviso.
Neste tutorial, vocรช aprenderรก como lidar com janelas pop-up em Selenium e os diferentes tipos de alertas encontrados em aplicativos da web ensaioVeremos tambรฉm como lidar com um alerta em Selenium WebDriver e como aceitar ou rejeitar alertas dependendo do tipo de alerta.
Tipos de alertas em Selenium
JavaO script exibe trรชs caixas de diรกlogo de alerta que Selenium Deve ser tratado de forma diferente.
1) Simple Alert
O alerta simples exibe informaรงรตes ou um aviso na tela. O usuรกrio sรณ pode confirmรก-lo clicando. OK.
2) Prompt Alert
O alerta solicita ao usuรกrio que insira informaรงรตes. Selenium O WebDriver pode digitar nele usando sendKeys("input...").
3) Confirmation Alert
O alerta de confirmaรงรฃo solicita ao usuรกrio que aprove ou cancele uma operaรงรฃo. Ele expรตe ambas as partes. OK e Cancelar botรตes.
Como lidar com um alerta em Selenium webdriver
O Alert interface em Selenium webdriver Expรตe quatro mรฉtodos que abrangem todas as interaรงรตes de alerta.
- anular dispensar() โ clica no Cancelar botรฃo.
driver.switchTo().alert().dismiss();
- nulo aceitar() โ clica no OK botรฃo.
driver.switchTo().alert().accept();
- String getText() โ captura a mensagem de alerta.
driver.switchTo().alert().getText();
- void sendKeys(String stringToSend) โ digita texto em um alerta de prompt.
driver.switchTo().alert().sendKeys("Text");
Eclipse O recurso de autocompletar mostra os mรฉtodos de alerta disponรญveis apรณs o comando `ty`.ping alert. na linha do editor. Alterne da janela principal para o alerta a qualquer momento usando Selenium'S .troque para() mรฉtodo.
Exemplo prรกtico: Excluir demonstraรงรฃo do cliente
Vamos automatizar o seguinte cenรกrio. Usaremos o Guru99 sites de demonstraรงรฃo para ilustrar Selenium tratamento de alertas.
Passo 1) Inicie o navegador e abra https://demo.guru99.com/test/delete_customer.php.
Passo 2) Insira qualquer ID de cliente.
Passo 3) Clique na Enviar botรฃo.
Passo 4) Aceitar ou rejeitar o alerta de confirmaรงรฃo resultante.
Selenium Java Code: Lidar com Confirmation Alert
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 {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
Saรญda: O navegador abre a pรกgina Excluir Cliente, envia o ID do cliente, aceita o alerta de confirmaรงรฃo e remove o registro do aplicativo de demonstraรงรฃo.
Como lidar com janelas pop-up Windows in Selenium webdriver
Quando a automaรงรฃo precisa funcionar em vรกrias janelas do navegador, o teste precisa alternar o foco entre elas e retornar ร janela principal apรณs cada operaรงรฃo. Selenium O WebDriver expรตe dois mรฉtodos que tornam isso possรญvel.
driver.getWindowHandles()
Retorna um Set<String> de cada identificador de janela aberta. Itere sobre o conjunto para alternar da janela principal para qualquer janela filha no aplicativo.
driver.getWindowHandle()
Retorna um String com o identificador exclusivo da janela atual. Capture-o antes de abrir qualquer janela filha para que vocรช possa retornar ร janela principal posteriormente.
Siga estes passos para demonstrar o manuseio de janelas em relaรงรฃo ao GuruDemonstraรงรฃo de 99 pop-ups.
Exemplo prรกtico: Troca de janelas
Passo 1) Inicie o navegador e abra https://demo.guru99.com/popup.php.
Passo 2) Clique na Clique aqui link. Uma nova janela filha serรก aberta.
Passo 3) A janela secundรกria solicita ao usuรกrio que insira um endereรงo de e-mail e envie o formulรกrio.
Passo 4) Insira o endereรงo de e-mail e envie.
Passo 5) A pรกgina exibe as credenciais de acesso retornadas pela demonstraรงรฃo.
Apรณs a exibiรงรฃo das credenciais:
- Feche a janela filha.
- Volte a focar na janela principal.
Selenium Java Code: Lidar com mรบltiplos Windows
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 {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
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();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
Saรญda: O site รฉ lanรงado, o Acesse aqui O link abre uma nova aba. Selenium Insere o endereรงo de e-mail e envia, fecha a janela filha e retorna ร janela principal.
Conclusรฃo
- Definiu os trรชs Selenium Tipos de alerta โ simples, de aviso e de confirmaรงรฃo โ com uma captura de tela para cada um.
- Demonstraรงรฃo do tratamento de alertas com o WebDriver
Alertinterface usando um cenรกrio funcional de exclusรฃo de cliente. - Gerenciou vรกrias janelas do navegador capturando identificadores com
getWindowHandle()egetWindowHandles()e alternando entre eles.















