how handle alerts popups selenium webdriver selenium tutorial 16
Maneiras eficientes de lidar com alertas / pop-ups do Windows e baseados na Web no Selenium WebDriver:
perguntas da entrevista unix e respostas para experientes
No tutorial anterior, focamos nossa discussão em diferentes tipos de espera fornecidos pelo WebDriver . Também discutimos sobre vários tipos de opções de navegação disponíveis no WebDriver.
Seguindo em frente no Tutoriais do Selenium WebDriver , vamos discutir sobre diferentes tipos de alertas disponíveis durante o teste de aplicativos da web e suas estratégias de tratamento.
Existem dois tipos de alertas nos quais estaríamos nos concentrando principalmente :
- Pop-ups de alerta baseados no Windows
- Pop-ups de alerta baseados na web
Como sabemos que lidar com pop-ups baseados em janelas está além das capacidades do WebDriver, portanto, usaríamos alguns utilitários de terceiros para lidar com pop-ups de janela.
Manipular pop-up é uma das peças de trabalho mais desafiadoras para automatizar durante o teste de aplicativos da web. Devido à diversidade de tipos de pop-ups torna a situação ainda mais complexa.
O que é caixa de alerta / caixa pop-up / caixa de confirmação / prompt / caixa de autenticação
Nada mais é do que uma pequena caixa que aparece na tela do visor para lhe dar algum tipo de informação ou para avisá-lo sobre uma operação potencialmente danosa ou pode até mesmo pedir-lhe as permissões para a operação.
Exemplo: Vamos considerar um exemplo da vida real para uma melhor compreensão; Vamos supor que carregamos uma fotografia em qualquer um desses sites populares de redes sociais. Mais tarde, desejo excluir a fotografia carregada. Portanto, para excluir, cliquei no botão excluir. Assim que clico no botão excluir, o sistema me avisa contra minha ação, perguntando - Você realmente deseja excluir o arquivo? Portanto, agora temos a opção de aceitar esse alerta ou rejeitá-lo.
Portanto, antes da sessão, vamos ver como rejeitamos ou aceitamos os alertas dependendo de seus tipos. Começando com os pop-ups baseados na web.
O que você aprenderá:
Popups baseados na web

Vamos ver como os tratamos usando o WebDriver.
Lidando com a caixa pop-up baseada na web
O WebDriver oferece aos usuários uma maneira muito eficiente de lidar com esses pop-ups usando a interface de Alerta.
Existem quatro métodos que usaríamos junto com a interface de Alerta.
1) void dispensar () - O método despedir () clica no botão “Cancelar” assim que a janela pop-up aparece.
dois) void aceitar () - O método accept () clica no botão “Ok” assim que a janela pop-up aparece.
3) String getText () - O método getText () retorna o texto exibido na caixa de alerta.
4) void sendKeys (String stringToSend) - O método sendKeys () insere o padrão de string especificado na caixa de alerta.
Vamos seguir em frente e olhar para a implementação real.
Explicação do aplicativo em teste
Projetamos uma página da web de forma a incluir alguns tipos fundamentais de elementos da web. Este é o mesmo aplicativo que apresentamos ao discutir a classe Selecionar anteriormente nesta série.
- Hiperlink : Os dois hiperlinks, a saber, “Google” e “abodeQA”, foram fornecidos para redirecionar o usuário para “http://www.google.com/” e “http://www.abodeqa.com/” respectivamente no clique no evento.
- Suspenso : Os três hiperlinks foram criados para selecionar cores, frutas e animais com um valor definido como padrão.
- Botão : Um botão “experimentar” foi criado para mostrar a caixa pop-up contendo os botões OK e Cancelar ao clicar no evento.
(Clique na imagem para ver ampliada)

A seguir está o código HTML usado para criar a página da web mencionada acima:
Teste Selecionar Classe| Vermelho Verde Amarelo Cinza | Limão maçã laranja manga | Selecionar cachorro-rato elefante |
| Clique no botão para exibir uma caixa de confirmação. Experimente a função myFunction () {confirm ('Pressione um botão!'); } |
Cenário a ser automatizado
- Inicie o navegador da web e abra a página da web
- Clique no botão “Experimente”
- Aceite o alerta
- Clique no botão “Experimente” novamente
- Rejeitar o alerta
Código WebDriver usando Selecionar classe
Observe que, para a criação do script, usaríamos o projeto “Learning_Selenium” criado no tutorial anterior.
Passo 1 : Crie uma nova classe java chamada “DemoWebAlert” no projeto “Learning_Selenium”.
Passo 2 : Copie e cole o código abaixo na classe “DemoWebAlert.java”.
Abaixo está o script de teste que é equivalente ao cenário mencionado acima.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } } Passo a passo do código
Declarações de importação
Import org.openqa.selenium.Alert - Importe este pacote antes da criação do script. O pacote faz referência à classe Alert, que é necessária para lidar com os alertas baseados na web no WebDriver.
Criação de objeto para classe de alerta
Alert alert = driver.switchTo (). Alert ();
Criamos uma variável de referência para a classe Alert e a referenciamos ao alerta.
argumentos de linha de comando em exemplos de script de shell
Mudar para alerta
Driver.switchTo (). Alert ();
O comando acima é usado para mudar o controle para a janela pop-up gerada recentemente.
Aceite o Alerta
alert.accept ();
O comando acima aceita o alerta clicando no botão OK.
Rejeitar o Alerta
alert.dismiss ();
O comando acima fecha o alerta clicando no botão Cancelar e, portanto, a operação não deve continuar.
Pop-ups baseados em janela

Às vezes, durante a automação, obtemos alguns cenários em que precisamos lidar com pop-ups gerados por janelas, como um pop-up de impressão ou uma janela de navegação durante o upload de um arquivo.
Leia também = >> Como lidar com o upload de arquivos no Selenium
Lidar com esses pop-ups sempre foi um pouco complicado, pois sabemos que o Selenium é uma ferramenta de teste de automação que suporta apenas testes de aplicativos da web, ou seja, não oferece suporte a aplicativos baseados em janelas e o alerta de janela é um deles. No entanto, o selênio sozinho não pode ajudar a situação, mas junto com alguma intervenção de terceiros, este problema pode ser superado.
Existem várias ferramentas de terceiros disponíveis para lidar com pop-ups baseados em janela junto com o selênio.
melhor limpador de computador para windows 10
Então, agora vamos lidar com uma janela pop-up baseada na classe Robot.
A classe Robot é um utilitário baseado em java que emula as ações do teclado e do mouse.
Antes de prosseguir, vamos dar uma olhada no aplicativo em teste (AUT).
Explicação do aplicativo em teste
Como um aplicativo em teste, usaríamos “gmail.com”. Acredito que o aplicativo não requer mais apresentações.
Cenário a ser automatizado
- Inicie o navegador da web e abra o aplicativo - “gmail.com”
- Insira um nome de usuário e uma senha válidos
- Clique no botão de login
- Clique no botão escrever
- Clique no ícone de anexar
- Selecione os arquivos a serem carregados com a janela pop-up.
Código WebDriver usando classe de robô
Observe que, para a criação do script, usaríamos o projeto “Learning_Selenium” criado no tutorial anterior.
Passo 1 : Crie uma nova classe java chamada “DemoWindowAlert” no projeto “Learning_Selenium”.
Passo 2 : Copie e cole o código abaixo na classe “DemoWindowAlert.java”.
Abaixo está o script de teste que é equivalente ao cenário mencionado acima.
import java.awt.Robot; import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; classe pública DemoWindowAlert {driver WebDriver; @Before public void setUp () {driver = new FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). maximize (); } @Test public void testWindowAlert () throws Exception {// insira um endereço de e-mail válido driver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // insira uma senha válida driver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // clique no botão de login driver.findElement (By.id ('signIn')). click (); Thread.sleep (30000); // clique no botão de composição driver.findElement (By.xpath ('// div (@ class =' z0 ') // div (contains (text (),' COMPOSE '))')). click (); // clique no ícone para anexar arquivos driver.findElement (By.xpath ('// div (contains (comando @,' Files ')) // div (contains (@ class,' aaA '))')). click ( ); // criando instância da classe Robot (Um utilitário baseado em java) Robot rb = new Robot (); // pressionando as teclas com a ajuda dos eventos keyPress e keyRelease rb.keyPress (KeyEvent.VK_D); rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @Após public void tearDown () {driver.quit (); }} Passo a passo do código
Declarações de importação
import java.awt.Robot - Importe este pacote antes da criação do script. O pacote faz referência à classe Robot em java, que é necessária para simular eventos de teclado e mouse.
import java.awt.event.KeyEvent - O pacote permite ao usuário usar os eventos keyPress e keyRelease de um teclado.
Criação de objetos para a classe Robot
Robot rb = novo Robot ();
Criamos uma variável de referência para a classe Robot e a instanciamos.
Eventos KeyPress e KeyRelease
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Os métodos keyPress e keyRelease simulam o usuário pressionando e soltando uma determinada tecla no teclado, respectivamente.
Conclusão
Neste tutorial, tentamos familiarizá-lo com a classe Alert do WebDriver, usada para lidar com pop-ups baseados na web. Também o informamos sobre a classe Robot que pode ser usada para preencher o valor no alerta baseado em janela com a ajuda dos eventos keyPress e keyRelease.
Resumo do artigo:
- Alertas são uma pequena caixa que aparece na tela do visor para lhe dar algum tipo de informação ou para avisá-lo sobre uma operação potencialmente danosa ou pode até mesmo pedir-lhe as permissões para a operação.
- Existem geralmente dois tipos de alertas -
- Pop-ups de alerta baseados no Windows
- Pop-ups de alerta baseados na web
- Antes do script real, precisamos importar um pacote para poder criar um script WebDriver para lidar com um menu suspenso e tornar acessível a classe Select.
- O WebDriver oferece aos usuários uma maneira muito eficiente de lidar com esses pop-ups usando a interface de Alerta.
- void dispensar () - O liberar() método clica no botão “Cancelar” assim que a janela pop-up aparece.
- void aceitar () - O aceitar() método clica no botão “Ok” assim que a janela pop-up aparece.
- Fragmento getText () - O getText () método retorna o texto exibido na caixa de alerta.
- void sendKeys (String stringToSend) - O sendKeys () método insere o padrão de string especificado na caixa de alerta.
- Lidar com pop-ups baseados em janela sempre foram um pouco complicados, pois sabemos que Selenium é uma ferramenta de teste de automação que suporta apenas testes de aplicativos da web, ou seja, não oferece suporte a aplicativos baseados em janelas e o alerta de janela é um deles.
- Classe de robô é um utilitário baseado em java que emula as ações do teclado e do mouse e pode ser usado efetivamente para lidar com janelas pop-up com a ajuda de eventos de teclado.
- Os métodos keyPress e keyRelease simulam o usuário pressionando e soltando uma determinada tecla no teclado, respectivamente.
Próximo Tutorial # 17 : No próximo tutorial, discutiremos sobre os vários outros comandos WebDriver comumente usados . Nós lançaríamos luz sobre tópicos como tratamento de exceções e tratamento de iframe. Também discutiríamos sobre os comandos get fornecidos no WebDriver.
Explicaríamos esses tópicos com exemplos rápidos a fim de torná-los compreensíveis para que os leitores exercitem esses conceitos em seus roteiros do dia a dia.
Nota para os leitores : Até então, fique atento e automatize as páginas da web com os pop-ups baseados na web e nas janelas usando o utilitário WebDriver - “Alert class” e o utilitário Java - “Robot Class”.
Sinta-se à vontade para postar suas dúvidas / comentários sobre este ou qualquer outro tutorial anterior nos comentários abaixo.
Leitura recomendada
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Implementação do nosso primeiro script WebDriver - Selenium WebDriver Tutorial # 10
- Configuração e instalação completas do WebDriver com Eclipse - Selenium Tutorial # 9
- Verifique a visibilidade dos elementos da Web usando vários tipos Comandos do WebDriver - Selenium Tutorial nº 14
- Tutorial do GeckoDriver Selenium: como usar o GeckoDriver em projetos do Selenium
- Integração do Jenkins com o Selenium WebDriver: tutorial passo a passo
- Scripts Eficientes do Selenium e Cenários de Solução de Problemas - Tutorial # 27 do Selenium