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().

  • ๐Ÿ”” Definiรงรฃo Essencial: A Selenium alerta รฉ um JavaDiรกlogo de script exibido acima da pรกgina que deve ser processado antes de outras aรงรตes.
  • ๐Ÿ—‚๏ธ Trรชs tipos de alerta: Os modos Simples (informaรงรฃo), Prompt (entrada de texto) e Confirmaรงรฃo (Sim/Nรฃo) requerem chamadas WebDriver diferentes.
  • ๐Ÿ› ๏ธ API de alertas: Use driver.switchTo().alert() com accept(), dismiss(), getText() e sendKeys() para interagir com a caixa de diรกlogo.
  • ๐ŸชŸ Manuseio de janelas: getWindowHandle() retorna o ID da janela atual; getWindowHandles() retorna o conjunto completo para troca de janelas.
  • ๐Ÿš€ Selenium 4 Nota: Selenium O gerenciador resolve automaticamente os drivers, eliminando a necessidade de caminhos chromedriver.exe codificados.
  • ๐Ÿค– Assistรชncia de IA: Agentes de IA geram scripts de alerta e de janelas com reconhecimento de localizaรงรฃo, reduzindo a necessidade de configuraรงรฃo manual em conjuntos de testes.

Como lidar com alertas e pop-ups em Selenium

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.

Exemplo simples de caixa de diรกlogo de alerta no navegador.

2) Prompt Alert

O alerta solicita ao usuรกrio que insira informaรงรตes. Selenium O WebDriver pode digitar nele usando sendKeys("input...").

Caixa de diรกlogo de alerta com campo de entrada

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.

Diรกlogo de alerta de confirmaรงรฃo com botรตes OK e Cancelar.

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.

  1. anular dispensar() โ€” clica no Cancelar botรฃo.
driver.switchTo().alert().dismiss();
  1. nulo aceitar() โ€” clica no OK botรฃo.
driver.switchTo().alert().accept();
  1. String getText() โ€” captura a mensagem de alerta.
driver.switchTo().alert().getText();
  1. 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.

Eclipse O preenchimento automรกtico exibe mรฉtodos de tratamento de alertas.

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.

Excluir pรกgina de demonstraรงรฃo do cliente com o campo ID do cliente

Passo 3) Clique na Enviar botรฃo.

Botรฃo Enviar para ativar o alerta de confirmaรงรฃo

Passo 4) Aceitar ou rejeitar o alerta de confirmaรงรฃo resultante.

Alerta de confirmaรงรฃo acionado por aรงรฃo de exclusรฃo

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.

Guru99 pรกginas de destino de demonstraรงรฃo de pop-up

Passo 2) Clique na Clique aqui link. Uma nova janela filha serรก aberta.

Abertura da janela infantil a partir do link "Clique aqui"

Passo 3) A janela secundรกria solicita ao usuรกrio que insira um endereรงo de e-mail e envie o formulรกrio.

Formulรกrio de entrada de e-mail da janela filha

Passo 4) Insira o endereรงo de e-mail e envie.

Envio de e-mail dentro da janela filha

Passo 5) A pรกgina exibe as credenciais de acesso retornadas pela demonstraรงรฃo.

As credenciais de acesso sรฃo exibidas na janela filha.

Apรณs a exibiรงรฃo das credenciais:

  1. Feche a janela filha.

Fechar a janela filha no navegador

  1. Volte a focar na janela principal.

Alternar o foco de volta para a 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.

Atendimento de mรบltiplas janelas concluรญdo em Selenium

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 Alert interface usando um cenรกrio funcional de exclusรฃo de cliente.
  • Gerenciou vรกrias janelas do navegador capturando identificadores com getWindowHandle() e getWindowHandles() e alternando entre eles.

Perguntas Frequentes

Um alerta รฉ nativo JavaDiรกlogo de script que suspende a pรกgina atรฉ ser processado. Uma janela pop-up รฉ uma nova janela ou aba do navegador. Alertas usam switchTo().alert(); pop-ups usam switchTo().window() com o identificador retornado por getWindowHandles().

A exceรงรฃo NoAlertPresentException รฉ lanรงada quando switchTo().alert() รฉ executado, mas nenhum alerta estรก sendo exibido no momento. Envolva a chamada com WebDriverWait atรฉ que ExpectedConditions.alertIsPresent() seja verdadeiro para dar tempo ร  pรกgina de acionar a caixa de diรกlogo.

Janelas pop-up de autenticaรงรฃo bรกsica nรฃo sรฃo padrรฃo. JavaAlertas de script. Passe as credenciais no URL (https://user:pass@site.com) ou use Selenium 4. CDP Network.setExtraHTTPHeaders. Para pop-ups de SSO, use BrowserStack ou um manipulador hasAuthentication registrado.

assistentes de IA, como AI Os copilotos de cรณdigo geram manipuladores de alertas com reconhecimento de localizaรงรฃo, preveem as esperas necessรกrias e refatoram XPath frรกgeis. Eles tambรฉm elaboram asserรงรตes para o texto do alerta e para a janela filha. URLs, acelerando Selenium criaรงรฃo de testes.

Sim. As plataformas de teste com capacidade de autorrecuperaรงรฃo usam IA para detectar alteraรงรตes no DOM, substituir localizadores quebrados e ajustar os tempos de espera quando alertas ou pop-ups mudam de posiรงรฃo. Isso reduz a necessidade de manutenรงรฃo. Selenium Suรญtes que funcionam com interfaces grรกficas atualizadas frequentemente.

Resuma esta postagem com: