Classe Robot dans Selenium Webdriver

Qu’est-ce que la classe Robot dans Selenium ?

Classe de robots dans Selenium est utilisé pour permettre des tests automatisés pour les implémentations de la plate-forme Java. 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 is used in Selenium because, in certain Selenium automation tests, users need control over keyboard or mouse to interact with OS windows like download pop-ups, print pop-ups, etc. and native applications like notepad, calculator, etc. Selenium Webdriver cannot handle these pop-ups/applications, so in 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 dans 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 du package Java 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 extrayez-le dans un autre dossier ou répertoire (disons D: ou E: )

Documentation sur les classes de robots

Étape 2) Extrayez le dossier src et accédez à (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 can be used, but its drawback is that it generates an executable file (exe) which will only work on windows, so it is not a good option to use.

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 Method
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 en sélénium

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 à l'aide de TestNG

Depuis, vous connaissez maintenant les méthodes de base de Robot Class, comprenons donc quelques détails supplémentaires.plex méthodes –

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 du fichier jar TestNG.

Dépendance TestNG maven :

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

Après avoir ajouté une dépendance maven ou un fichier jar. Vous devez importer l'annotation Test de testNG. Une fois que tout est terminé, 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 commencera 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é

Robot class in AWT package is used to generate keyboard/mouse events to interact with OS windows et applications natives.

L'objectif principal de Robot est de prendre en charge la création de projets de tests automatisés Selenium sur la plate-forme Java.