efficient selenium scripting
No tutorial anterior, discutimos as implicações técnicas durante a implementação de registro em uma estrutura . Nós discutimos utilitário log4j no comprimento. Discutimos os componentes básicos que constituem o log4j de uma perspectiva de usabilidade. Com os Appenders e layouts, um usuário é alavancado para escolher o formato / padrão de registro desejado e a fonte de dados / localização.
No atual 27º tutorial neste série abrangente de treinamento online de selênio grátis , mudaríamos nosso foco para algumas coisas triviais ainda tópicos importantes que nos orientaria a solucionar alguns problemas recorrentes. Podemos ou não usá-los no script diário, mas eles seriam úteis no longo prazo.
Nós gostaríamos discutir alguns conceitos avançados em que lidaríamos com eventos de mouse e teclado, acessando vários links através da implementação de listas . Então, por que não vamos apenas começar e discutir brevemente esses tópicos com a ajuda de cenários apropriados e snippets de código.
teste seu site em diferentes navegadores
O que você aprenderá:
- Executores JavaScript
- Acessando vários elementos em uma lista
- Tratamento de eventos de teclado e mouse
- Conclusão
- Leitura recomendada
Executores JavaScript
Ao automatizar um cenário de teste, existem certas ações que se tornam uma parte inerente dos scripts de teste.
Essas ações podem ser:
- Clicar em um botão, hiperlink, etc.
- Digitando em uma caixa de texto
- Rolar verticalmente ou horizontalmente até que o objeto desejado seja mostrado
- E muito mais
Agora, é evidente a partir dos tutoriais anteriores que a melhor maneira de automatizar tais ações é usando comandos Selenium.
Mas e se os comandos de selênio não funcionarem?
Sim, é absolutamente possível que os Comandos do Selênio muito básicos e elementares não funcionem em certas situações.
Dito isso, para poder solucionar tal situação, colocamos os executores de JavaScript em ação.
O que são executores JavaScript?
A interface JavascriptExecutor faz parte de org.openqa.selenium e implementa a classe java.lang.Object. JavascriptExecutor apresenta os recursos para executar JavaScript diretamente no navegador da web. Para ser capaz de executar o JavaScript, certos mecanismos na forma de métodos juntamente com um conjunto específico de parâmetros são fornecidos em sua implementação.
Métodos
executeScript (script de string, args)
Como o nome do método sugere, ele executa o JavaScript dentro da janela atual, alerta, quadro etc. (a janela em que a instância do WebDriver está focando atualmente)
executeAsyncScript (String script, args)
como reproduzir arquivos swf no windows
Como o nome do método sugere, ele executa o JavaScript dentro da janela atual, alerta, quadro etc. (a janela em que a instância do WebDriver está focando atualmente)
Os parâmetros e a instrução de importação são comuns a ambos os métodos do executor.
Parâmetros
Script - o script a ser executado
Argumento - os parâmetros que o script requer para sua execução (se houver)
Declaração de importação
Para poder usar JavascriptExecutors em nossos scripts de teste, precisamos importar o pacote usando a seguinte sintaxe:
import org.openqa.selenium.JavascriptExecutor;
Código de amostra
# 1) Clicar em um elemento da web
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments[0].click();', element);
# 2) Digitando em uma caixa de texto
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Rolar para baixo até que o elemento da web esteja na visualização
WebElement element=driver.findElement(By.xpath('//input[contains(@value,'Save')]')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments[0].scrollIntoView(true);',element);
Você pode encontrar várias outras maneiras de escrever o código para acessar JavascriptExecutors.
Acessando vários elementos em uma lista
Às vezes, podemos encontrar elementos do mesmo tipo, como vários hiperlinks, imagens, etc., organizados em uma lista ordenada ou não ordenada. Portanto, faz todo o sentido lidar com esses elementos por um único trecho de código e isso pode ser feito usando WebElement List. Consulte a captura de tela abaixo para entender os elementos dos quais estou falando.
Na imagem acima, vemos que os diversos prestadores de serviço pertencem a uma lista não ordenada. Assim, a verificação da clicabilidade e visibilidade desses elementos pode ser feita por um único trecho de código usando uma lista de elementos.
Declaração de importação
Para poder usar uma lista WebElement em nossos scripts de teste, precisamos importar o pacote usando a seguinte sintaxe:
import java.util.List;
Código de amostra
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div[@id='ServiceProvider']//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iExistem vários requisitos sob os quais as listas podem ser usadas para verificar os elementos com mudanças de implementação adequadas.
Tratamento de eventos de teclado e mouse
Tratamento de eventos de teclado
Como também foi dito anteriormente, existem várias maneiras de lidar com a mesma definição de problema em diferentes contextos.
Assim, às vezes surge a necessidade de lidar com um problema, alterando a estratégia de tratamento convencional por uma estratégia mais avançada. Testemunhei casos em que não consegui lidar com alertas e pop-ups etc. por comandos do selenium, portanto, tive que optar por diferentes utilitários Java para lidar com isso usando toques de teclado e eventos de mouse.
A classe Robot é uma dessas opções para realizar eventos de teclado e eventos de mouse.
Vamos entender o conceito com a ajuda de um cenário e sua implementação.
Cenário:
Vamos reunir uma situação em que um pop-up desnecessário apareça na tela que não pode ser aceito ou descartado usando a Interface de Alerta, portanto, a única opção inteligente que resta é fechar a janela usando as teclas de atalho - “Alt + barra de espaço + C” . Vamos ver como fechamos o pop-up usando Robot Class.
Antes de iniciar a implementação, devemos importar o pacote necessário para poder usar a classe Robot dentro do nosso script de teste.
Declaração de Importação
import java.awt.Robot;
Código de amostra
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
A classe Robot também pode ser usada para lidar com eventos de mouse, mas vamos dar uma olhada nos recursos do selênio para lidar com eventos de mouse.
Tratamento de eventos de mouse
O WebDriver oferece uma ampla gama de utilitários de interação que o usuário pode explorar para automatizar eventos de mouse e teclado. A interface de ação é um utilitário que simula as interações de um único usuário.
Portanto, veríamos a interface de ação passar o mouse em uma lista suspensa que abriria uma lista de opções no próximo cenário.
Cenário:
- Passe o mouse no menu suspenso
- Clique em um dos itens nas opções da lista
Declaração de Importação
import org.openqa.selenium.interactions.Actions;
Código de amostra
como jogar objetos em flash shockwave
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Conclusão
Neste tutorial, discutimos alguns tópicos avançados relacionados a scripts eficientes e à solução de problemas de cenários em que o usuário é obrigado a manipular eventos de mouse e teclado. Também discutimos como armazenar mais de um elemento da web em uma lista. Espero que você consiga solucionar esses impedimentos, se encontrados.
Próximo tutorial nº 28 : Para o próximo tutorial da série, discutiríamos o conceito de teste de banco de dados usando Selenium WebDriver . Assistiríamos ao mecanismo de conexão do banco de dados, acessando consultas de selênio e obtendo os resultados por meio do código do Selenium WebDriver.
Leitura recomendada
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Depurando Scripts Selenium com Logs (Tutorial Log4j) - Tutorial Selenium # 26
- 30+ Melhores Tutoriais de Selênio: Aprenda Selênio com Exemplos Reais
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Como localizar elementos em navegadores Chrome e IE para construir scripts do Selenium - Tutorial do Selenium nº 7
- Implementação do nosso primeiro script WebDriver - Selenium WebDriver Tutorial # 10
- Configuração e instalação completas do WebDriver com Eclipse - Selenium Tutorial # 9
- Criando Genéricos e Conjuntos de Testes - Tutorial do Selenium nº 22