Classe de robô no Selenium Webdriver

Índice:

Anonim

Classe de Robô

A classe de robô no Selenium é usada para habilitar testes automatizados para implementações da plataforma Java. Ele gera eventos de entrada em sistemas nativos para automação de teste, demos de execução automática e outros aplicativos onde os usuários precisam de controle sobre o mouse e o teclado. A classe Robot é fácil de implementar e pode ser facilmente integrada a uma estrutura automatizada.

Por que a classe de robôs?

A classe Robot é usada no Selenium porque, em certos testes de automação do Selenium, os usuários precisam controlar o teclado ou o mouse para interagir com as janelas do sistema operacional, como pop-ups de download, pop-ups de impressão etc., e aplicativos nativos como bloco de notas, calculadora etc. Selenium O Webdriver não pode lidar com esses pop-ups / aplicativos, portanto, no Java versão 1.3, foi introduzida uma classe de robô que pode lidar com pop-ups / aplicativos do sistema operacional.

Neste tutorial, você aprenderá,

  • Benefícios da classe de robôs
  • Documentação da classe do robô
  • Compreendendo os métodos internos e o uso da classe de robô
  • Como executar código de classe de robô usando testNG
  • Desvantagens da classe de robôs

Benefícios da classe de robôs

  1. A classe de robô pode simular eventos de teclado e mouse
  2. A classe de robô pode ajudar no upload / download de arquivos ao usar o driver da web selênio
  3. O Robot Class pode ser facilmente integrado com a estrutura de automação atual (palavra-chave, orientado a dados ou híbrido)

O que é documentação de classes de robôs?

A documentação da classe do robô no Selenium ajuda os usuários a entender a definição básica, sintaxe e uso de todos os métodos e funções disponíveis na classe do robô no pacote Java AWT. Os usuários podem visualizar a documentação no site oficial da Oracle. Os usuários também podem criar a documentação em sua máquina local.

Para criar a documentação na máquina local, siga as etapas abaixo-

Etapa 1) Você encontrará o arquivo src.zip na pasta JDK. Copie src.zip e extraia o mesmo em alguma outra pasta ou diretório (diga D: ou E:)

Etapa 2) Extraia a pasta src e navegue até (caminho até a pasta src) / src / java / awt

Etapa 3) Copie a localização atual da pasta awt e abra o prompt de comando.

Etapa 4) No cmd, altere a localização do diretório atual para a pasta awt e digite 'javadoc * .java' conforme mostrado abaixo

Espere um pouco para que o sistema seja processado, uma vez concluído, você verá alguns arquivos HTML na pasta awt.

Etapa 5) Abra index.html

Passo 6) Aqui você tem a documentação completa do pacote awt, na barra de navegação esquerda, clique no hiperlink 'Robot' (veja 1 marcado na imagem abaixo).

Aqui você também pode ver todos os métodos e interfaces da classe do robô (ver 2 marcado na imagem acima).

Compreendendo os métodos internos e o uso da classe de robô

Os métodos de classe de robô podem ser usados ​​para interagir com eventos de teclado / mouse durante a automação do navegador. Alternativamente, o AutoIT pode ser usado, mas sua desvantagem é que ele gera um arquivo executável (exe) que só funcionará no Windows, por isso não é uma boa opção de uso.

Alguns métodos comumente usados ​​de Robot Class durante a automação da web:

  • keyPress (): Exemplo: robot.keyPress (KeyEvent.VK_DOWN): Este método com pressione a tecla de seta para baixo do teclado
  • mousePress (): Exemplo : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Este método irá pressionar o botão direito do mouse.
  • mouseMove (): Exemplo : robot.mouseMove (point.getX (), point.getY ()): Isso moverá o ponteiro do mouse para as coordenadas X e Y especificadas.
  • keyRelease (): Exemplo: robot.keyRelease (KeyEvent.VK_DOWN): Este método com a tecla de seta para baixo do teclado
  • mouseRelease (): Exemplo: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Este método irá liberar o clique direito do seu mouse

Código de amostra para automatizar casos de uso comuns usando a classe de robô

  • Vamos dar um exemplo de site http://spreadsheetpage.com/index.php/file/C35/P10/ em que depois de clicar em um elemento da web ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) um pop-up de download do sistema operacional aparece.
  • Para lidar com isso, usamos a classe Robot (criando uma instância da Classe Robot em seu código, diga Robot robot = new Robot () ). A classe do robô está presente no pacote AWT do JDK.
  • Para pressionar a tecla de seta para baixo do teclado, usamos ( robot.keyPress (KeyEvent.VK_DOWN))
  • Para pressionar a tecla TAB do teclado (usamos robot.keyPress (KeyEvent.VK_TAB))
  • Para pressionar a tecla Enter, usamos ( robot.keyPress (KeyEvent.VK_ENTER)).

Aqui está um código de amostra

import java.awt.AWTException;import java.awt.Robot;import java.awt.event.KeyEvent;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;class Excercise1 {public static void main (String [] args) lança AWTException, InterruptedException {Driver WebDriver = novo FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // url de amostradriver.findElement (By.xpath (".// a [@ href = contains (text (), 'year-calendar.xls')]")). click ();Robô robô = novo Robô (); // A classe do robô lança exceção AWTThread.sleep (2000); // Thread.sleep lança InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // pressione a tecla de seta para baixo do teclado para navegar e selecione o botão de opção SalvarThread.sleep (2000); // sleep só foi usado para mostrar cada evento separadamenterobot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// pressione a tecla enter do teclado para executar a ação selecionada acima}} 

Confira este vídeo para vê-lo em ação

Como executar código de classe de robô usando TestNG

Visto que agora você conhece os métodos básicos da classe de robô, vamos entender alguns métodos mais complexos -

Suponha que você não queira usar o método click para clicar no elemento da web.

Nesses casos, você pode usar o método mouseMove da classe Robot.

Etapa 1) O método mouseMove usa as coordenadas xey como parâmetros como robot.mouseMove (630, 420) onde 630 indica o eixo x e 420 indica o eixo y. Portanto, este método moverá o ponteiro do mouse da localização atual para o ponto de intersecção xey mencionado.

Etapa 2) Em seguida, precisamos pressionar o botão do mouse. Podemos usar o método mousePress como robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Passo 3) Após pressionar, o mouse precisa ser liberado. Podemos usar robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) para liberar o clique esquerdo do mouse.

Executando o código usando testNG:

A execução de código usando Testng requer dependência maven de testNG ou biblioteca referenciada de arquivo jar TestNG.

Dependência do maven TestNG:

 org.testng  testng  6.1.1  

Depois de adicionar dependência de maven ou arquivo jar. Você precisa importar a anotação de teste do testNG. Assim que estiver tudo pronto, basta clicar com o botão direito do mouse no código do programa e clicar em Executar como e, em seguida, clicar em TestNG

… E você descobrirá que o código iniciará sua execução usando a API testNG.

Aqui está o código

import java.awt.AWTException;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;public class Excersise1 {@Testepublic static void execution () throws InterruptedException, AWTException {Driver WebDriver = novo FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // url de amostraRobô robô = novo Robô ();robot.mouseMove (630, 420); // move o ponto do mouse para um local específicorobot.delay (1500); // atraso é para fazer o código esperar os milissegundos mencionados antes de executar a próxima etaparobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // pressione o botão esquerdorobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // solte o botão esquerdorobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // pressione a tecla de seta do teclado para selecionar o botão de opção SalvarThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// pressione a tecla enter do teclado para executar a ação selecionada acima}}

Confira este vídeo para vê-lo em ação

Desvantagens da classe de robôs

A estrutura do robô tem algumas desvantagens mencionadas abaixo:

  1. O evento de palavra-chave / mouse só funciona na instância atual da janela. Por exemplo, suponha que um código está realizando qualquer evento de classe de robô e, durante a execução do código, o usuário mudou para alguma outra tela, então o evento de palavra-chave / mouse ocorrerá nessa tela.
  2. A maioria dos métodos, como mouseMove, depende da resolução da tela, portanto, pode haver uma chance de que o código que funciona em uma máquina não funcione em outra.

Resumo

A classe de robô no pacote AWT é usada para gerar eventos de teclado / mouse para interagir com janelas do sistema operacional e aplicativos nativos.

O objetivo principal do Robot é oferecer suporte a projetos de testes automatizados de selênio na plataforma Java

Este artigo foi contribuído por Ramandeep Singh, que é engenheiro de automação de teste em uma multinacional líder.