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: )
ร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.
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
ร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).
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
- La classe Robot peut simuler un รฉvรฉnement clavier et souris
- Robot Class peut aider au tรฉlรฉchargement/tรฉlรฉchargement de fichiers lors de l'utilisation du pilote Web Selenium
- 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 :
- 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.
- 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




