Classe de robot dans Selenium Webdriver

Table des matières:

Anonim

Classe de robot

La classe de robot dans Selenium est utilisée 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 des systèmes natifs pour l'automatisation des tests, des démos auto-exécutables et d'autres applications où les utilisateurs ont besoin de contrôler la souris et le clavier. La classe de robot est facile à mettre en œuvre et peut être facilement intégrée à un cadre automatisé.

Pourquoi Robot Class?

Robot Class est utilisé dans Selenium car, dans certains tests d'automatisation Selenium, les utilisateurs ont besoin de contrôler le clavier ou la souris pour interagir avec les fenêtres du système d'exploitation telles que les fenêtres 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 la version 1.3 de Java, une classe de robot a été introduite, capable de gérer les pop-ups / applications du système d'exploitation.

Dans ce tutoriel, vous apprendrez,

  • Avantages de la classe de robot
  • Documentation de la classe de robot
  • Comprendre les méthodes internes et l'utilisation de la classe Robot
  • Comment exécuter le code de classe de robot à l'aide de testNG
  • Inconvénients de la classe de robot

Avantages de la classe de robot

  1. La classe de robot peut simuler un événement de clavier et de souris
  2. Robot Class peut aider à télécharger / télécharger des fichiers lors de l'utilisation du pilote Web sélénium
  3. Robot Class peut facilement être intégré au cadre d'automatisation actuel (mot-clé, basé sur les données ou hybride)

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

La documentation de classe de robot 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 de robot dans le package Java AWT. Les utilisateurs peuvent consulter la documentation sur le site Web officiel d'Oracle. Les utilisateurs peuvent également créer eux-mêmes la documentation sur leur machine locale.

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 (dites D: ou E:)

É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

Attendez un moment pour que le système traite, une fois terminé, vous verrez quelques fichiers HTML dans le dossier awt.

Étape 5) Ouvrez index.html

É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 indiqué dans l'image ci-dessous).

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

Comprendre les méthodes internes et l'utilisation de la classe Robot

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 sur Windows, ce n'est donc pas une bonne option à utiliser.

Certaines méthodes couramment et populaires utilisées de Robot Class lors de l'automatisation Web:

  • keyPress (): Exemple: robot.keyPress (KeyEvent.VK_DOWN): Cette méthode avec appuyez sur la touche fléchée bas du clavier
  • mousePress (): Exemple : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Cette méthode appuiera sur le clic droit de votre souris.
  • mouseMove (): Exemple : robot.mouseMove (point.getX (), point.getY ()): Cela déplacera le pointeur de la souris sur les coordonnées X et Y spécifiées.
  • keyRelease (): Exemple: robot.keyRelease (KeyEvent.VK_DOWN): Cette méthode avec relâchement de la touche fléchée vers le bas du clavier
  • mouseRelease (): Exemple: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Cette méthode libère 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/ où, 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 Classe Robot dans votre code, dites Robot robot = nouveau Robot () ). Classe de robot nous présente dans le package AWT de JDK.
  • Pour appuyer sur la touche fléchée vers le bas du clavier, nous utilisons ( robot.keyPress (KeyEvent.VK_DOWN))
  • Pour appuyer sur la touche TAB du clavier (nous utilisons robot.keyPress (KeyEvent.VK_TAB))
  • Pour appuyer sur la touche Entrée, nous utilisons ( robot.keyPress (KeyEvent.VK_ENTER)).

Voici un exemple de code

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) lève AWTException, InterruptedException {Pilote WebDriver = nouveau FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // exemple d'urldriver.findElement (By.xpath (".// a [@ href = contient (text (), 'annual-calendar.xls')]")). click ();Robot robot = nouveau robot (); // La classe Robot lève une exception AWTThread.sleep (2000); // Thread.sleep lance une exception InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // appuyez sur la touche fléchée bas du clavier pour naviguer et sélectionnez le bouton radio EnregistrerThread.sleep (2000); // sleep n'a été utilisé que pour présenter chaque événement séparémentrobot.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);// appuyez sur la touche Entrée du clavier pour effectuer l'action sélectionnée ci-dessus}} 

Regardez cette vidéo pour la voir en action

Comment exécuter le code de classe de robot à l'aide de TestNG

Depuis, vous connaissez maintenant les méthodes de base de Robot Class, alors comprenons quelques méthodes plus complexes -

Supposons que vous ne souhaitiez pas utiliser la 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 tels que robot.mouseMove (630, 420) où 630 indique l'axe x et 420 indique l'axe y. Ainsi, cette méthode déplacera le pointeur de votre souris de l'emplacement actuel au 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 mousePress comme robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Étape 3) Après avoir appuyé sur, la souris doit être relâchée. Nous pouvons utiliser robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) afin de libérer le clic gauche d'une souris.

Exécution de code à l'aide de testNG:

L'exécution de code à l'aide de Testng nécessite une dépendance maven de testNG ou une bibliothèque référencée de fichier jar TestNG.

Dépendance testNG maven:

 org.testng  testng  6.1.1  

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 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 commencera son exécution en utilisant 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 {@Testpublic static void execution () lève InterruptedException, AWTException {Pilote WebDriver = nouveau FirefoxDriver ();driver.manage (). window (). maximiser ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // exemple d'urlRobot robot = nouveau robot ();robot.mouseMove (630, 420); // déplace le point de la souris vers un emplacement spécifiquerobot.delay (1500); // le délai consiste à faire attendre le code pendant les millisecondes mentionnées avant d'exécuter l'étape suivanterobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // appuyez sur le clic gaucherobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // relâchez le clic gaucherobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // appuyez sur la touche fléchée du clavier pour sélectionner le bouton radio EnregistrerThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// appuyez sur la touche Entrée du clavier pour effectuer l'action sélectionnée ci-dessus}}

Regardez cette vidéo pour la voir en action

Inconvénients de la classe de robot

Le châssis du 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 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 dans le 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 de sélénium sur la plate-forme Java

Cet article est rédigé par Ramandeep Singh, qui est ingénieur en automatisation de test dans une entreprise multinationale de premier plan.