Classe de robots dans Selenium Pilote Web

Qu'est-ce que la classe de robot Selenium?

Classe de robots in Selenium est utilisรฉ pour permettre des tests automatisรฉs pour les implรฉmentations de Java plate-forme. Il gรฉnรจre des รฉvรฉnements d'entrรฉe dans les systรจmes natifs pour l'automatisation des tests, les dรฉmos auto-exรฉcutables et d'autres applications oรน les utilisateurs ont besoin de contrรดler la souris et le clavier. La classe Robot est facile ร  mettre en ล“uvre et peut รชtre facilement intรฉgrรฉe ร  un framework automatisรฉ.

Pourquoi la classe Robot ?

Classe de robots est utilisรฉ dans Selenium parce que, dans certains Selenium tests d'automatisation, les utilisateurs ont besoin de contrรดler le clavier ou la souris pour interagir avec les fenรชtres du systรจme d'exploitation comme les fenรชtres contextuelles de tรฉlรฉchargement, les fenรชtres contextuelles d'impression, etc. et les applications natives comme le bloc-notes, la calculatrice, etc. Selenium Webdriver ne peut pas gรฉrer ces pop-ups/applications, donc dans Java Dans la version 1.3, une classe de robots a รฉtรฉ introduite et peut gรฉrer les pop-ups/applications du systรจme d'exploitation.

Documentation sur les classes de robots

Le Documentation sur les classes de robots in Selenium aide les utilisateurs ร  comprendre la dรฉfinition de base, la syntaxe et l'utilisation de toutes les mรฉthodes et fonctions disponibles dans la classe robot dans Java Forfait AWT. Les utilisateurs peuvent consulter la documentation sur le Oracle site. Les utilisateurs peuvent รฉgalement crรฉer eux-mรชmes la documentation sur leur ordinateur local.

Pour crรฉer la documentation sur la machine locale, suivez les รฉtapes ci-dessous :

ร‰tape 1) Vous trouverez le fichier src.zip dans le dossier JDK. Copiez src.zip et extracla mรชme chose dans un autre dossier ou rรฉpertoire (par exemple D: ou E: )

Documentation sur les classes de robots

ร‰tape 2) ExtracAccรฉdez au dossier src et naviguez jusqu'ร  (chemin jusqu'au dossier src)./src/java/awt

ร‰tape 3) Copiez l'emplacement actuel du dossier awt et ouvrez l'invite de commande.

ร‰tape 4) Dans cmd, changez l'emplacement de votre rรฉpertoire actuel en dossier awt et tapez ยซ javadoc *.java ยป comme indiquรฉ ci-dessous.

Documentation sur les classes de robots

Attendez un moment que le systรจme traite, une fois terminรฉ, vous verrez quelques fichiers HTML dans le dossier awt.

ร‰tape 5) Ouvrir index.html

Documentation sur les classes de robots

ร‰tape 6) Voici la documentation complรจte du package awt, dans la barre de navigation de gauche, cliquez sur le lien hypertexte ยซ Robot ยป (voir 1 marquรฉ dans l'image ci-dessous).

Documentation sur les classes de robots

Ici, vous pouvez รฉgalement voir toutes les mรฉthodes et interfaces de Robot Class (voir 2 marquรฉs dans l'image ci-dessus).

Mรฉthodes de classe de robot dans Selenium et utilisation

Les mรฉthodes de classe Robot peuvent รชtre utilisรฉes pour interagir avec les รฉvรฉnements clavier/souris tout en automatisant le navigateur. Alternativement AutoIT peut รชtre utilisรฉ, mais son inconvรฉnient est qu'il gรฉnรจre un fichier exรฉcutable (exe) qui ne fonctionnera que sous Windows, ce n'est donc pas une bonne option ร  utiliser.

Certaines mรฉthodes couramment utilisรฉes de Robot Class lors de lโ€™automatisation Web :

Mรฉthode 1 : keyPress() :

robot.keyPress(KeyEvent.VK_DOWN) : Cette mรฉthode en appuyant sur la touche flรฉchรฉe vers le bas du clavier

Mรฉthode 2 : mousePress() :

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK) : Cette mรฉthode appuiera sur le clic droit de votre souris.

Mรฉthode 3 : mouseMove() :

robot.mouseMove(point.getX(), point.getY()) : cela dรฉplacera le pointeur de la souris vers les coordonnรฉes X et Y spรฉcifiรฉes.

Mรฉthode 4 : keyRelease() :

robot.keyRelease(KeyEvent.VK_DOWN) : Cette mรฉthode avec la touche flรฉchรฉe vers le bas du clavier

Mรฉthode 5 : mouseRelease() :

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK) : Cette mรฉthode libรฉrera le clic droit de votre souris

Exemple de code pour automatiser les cas d'utilisation courants ร  l'aide de Robot Class

  • Prenons l'exemple du site Web http://spreadsheetpage.com/index.php/file/C35/P10/ dans lequel aprรจs avoir cliquรฉ sur un รฉlรฉment Web (.//a[@href=contains(text(),'yearly-calendar.xls']), une fenรชtre contextuelle de tรฉlรฉchargement du systรจme d'exploitation apparaรฎt.
  • Pour gรฉrer cela, nous utilisons la classe Robot (en crรฉant une instance de Robot Class dans votre code, par exemple Robot robot = nouveau Robot()) . La classe Robot est prรฉsente dans le package AWT du JDK.
Touche du clavier Mรฉthode
Pour appuyer sur la touche flรฉchรฉe vers le bas nous utilisons (robot.keyPress(KeyEvent.VK_DOWN))
Pour appuyer sur la touche TAB nous utilisons (robot.keyPress(KeyEvent.VK_TAB))
Pour appuyer sur la touche Entrรฉe nous utilisons (robot.keyPress(KeyEvent.VK_ENTER))

Exemple de classe de robot dans Selenium

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) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.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);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

Regardez cette vidรฉo pour le voir en action

Comment exรฉcuter le code de la classe Robot en utilisant TestNG

Puisque vous connaissez maintenant les mรฉthodes de base de Robot Class, comprenons donc quelques mรฉthodes plus complexes โ€“

Supposons que vous ne vouliez pas utiliser le mรฉthode de clic pour cliquer sur un รฉlรฉment Web.

Dans de tels cas, vous pouvez utiliser la mรฉthode mouseMove de la classe Robot.

ร‰tape 1) La mรฉthode mouseMove prend les coordonnรฉes x et y comme paramรจtres comme robot.mouseMove(630, 420) oรน 630 indique l'axe des x et 420 indique l'axe des y. Ainsi, cette mรฉthode dรฉplacera le pointeur de votre souris de lโ€™emplacement actuel vers le point dโ€™intersection x et y mentionnรฉ.

ร‰tape 2) Ensuite, nous devons appuyer sur le bouton de la souris. Nous pouvons utiliser la mรฉthode sourisPresse comme robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

ร‰tape 3) Aprรจs avoir appuyรฉ, la souris doit รชtre relรขchรฉe. On peut utiliser robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) afin de relรขcher le clic gauche d'une souris.

Exรฉcuter du code ร  l'aide de testNG :

Exรฉcuter du code en utilisant Tester nรฉcessite une dรฉpendance Maven de testNG ou une bibliothรจque rรฉfรฉrencรฉe de TestNG fichier jar.

TestNG dรฉpendance maven :

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

Aprรจs avoir ajoutรฉ la dรฉpendance Maven ou le fichier jar. Vous devez importer l'annotation de test de testNG. Une fois que tout est fait, faites un clic droit sur le code du programme et cliquez sur Exรฉcuter en tant que, puis cliquez sur TestNGโ€ฆ et vous constaterez que le code dรฉmarrera son exรฉcution ร  lโ€™aide de lโ€™API testNG.

Voici le code

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 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

Regardez cette vidรฉo pour le voir en action

Avantages de la classe robot

  1. La classe Robot peut simuler un รฉvรฉnement clavier et souris
  2. Robot Class peut aider au tรฉlรฉchargement/tรฉlรฉchargement de fichiers lors de l'utilisation du pilote Web Selenium
  3. Robot Class peut facilement รชtre intรฉgrรฉ au cadre d'automatisation actuel (mot clรฉ, basรฉ sur les donnรฉes ou hybride)

Inconvรฉnients de la classe robot

Le framework robot prรฉsente quelques inconvรฉnients mentionnรฉs ci-dessous :

  1. L'รฉvรฉnement mot-clรฉ/souris ne fonctionnera que sur l'instance actuelle de Window. Par exemple, supposons qu'un code exรฉcute un รฉvรฉnement de classe de robot et que pendant l'exรฉcution du code, l'utilisateur s'est dรฉplacรฉ vers un autre รฉcran, un รฉvรฉnement mot-clรฉ/souris se produira sur cet รฉcran.
  2. La plupart des mรฉthodes telles que mouseMove dรฉpendent de la rรฉsolution de l'รฉcran, il est donc possible que le code fonctionnant sur une machine ne fonctionne pas sur une autre.

Rรฉsumรฉ

La classe Robot du package AWT est utilisรฉe pour gรฉnรฉrer des รฉvรฉnements clavier/souris pour interagir avec les fenรชtres du systรจme d'exploitation et les applications natives.

L'objectif principal de Robot est de prendre en charge le projet de tests automatisรฉs Selenium intรฉgrรฉ Java

Rรฉsumez cet article avec :