robot class selenium webdriver with java
Ce didacticiel explique les utilisations, exemples et fonctionnalités de la classe Robot en Java et son intégration avec Selenium Framework:
Robot Java est un Robot classe dans le Java Package AWT. Il est généralement utilisé pour simuler les opérations du clavier et de la souris en temps réel, ce que nous faisons manuellement.
L'objectif principal de la classe de robot en Java est l'automatisation. La beauté de celui-ci est qu'il peut être facilement intégré au cadre d'automatisation actuel pour augmenter sa portée.
Ce que vous apprendrez:
- Classe de robot en Java
- Conclusion
Classe de robot en Java
Dans ce didacticiel, nous en apprendrons davantage sur l'intégration de Selenium avec Robot Class en Java, mais en général, Java Robot Class peut être utilisé dans n'importe quel framework d'automatisation basé sur Java.
Simulation des fonctionnalités de la classe de robot
Il existe de nombreuses fonctionnalités de Robot Class en Java, énumérées ci-dessous sont quelques méthodes notées qui leur sont associées:
# 1) Fonctionnalités du clavier
Les fonctionnalités clavier de la classe Robot traitent généralement de la simulation des différentes touches disponibles dans les claviers et de leurs opérations.
Public void keyPress (code clé int)
Cette fonction appuie sur la touche de paramètre d'entrée. Pour terminer l'opération, la méthode de libération de clé doit être utilisée.
Suivez l'extrait de code ci-dessous:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Ici, dans l'extrait de code ci-dessus, nous appuyons simplement sur CTRL + V. La méthode KeyEvent est associée à d'autres touches disponibles sur notre clavier. On peut tous les essayer.
Public void keyRelease (code clé int)
Cette méthode libère la clé de paramètre d'entrée. Il s'agit de la post-opération de la méthode des touches.
Suivez l'extrait de code ci-dessous:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Ici, dans l'extrait de code ci-dessus, nous publions simplement CTRL + V. De même comme indiqué ci-dessus, la méthode KeyEvent est également associée à d'autres touches disponibles sur notre clavier. On peut tous les essayer.
# 2) Fonctionnalités de la souris
Les fonctionnalités de la souris permettent de simuler différentes opérations de la souris.
Public void mouseMove (int x, int y)
Ici, les deux paramètres déterminent les coordonnées de l'écran. Une fois que nous avons donné les coordonnées, la souris se déplace vers le point des coordonnées données de l'écran.
Suivez l'extrait de code donné:
robot.mouseMove (0, 900);
Ici, la position du paramètre x est 0 et le paramètre y est 900. Ainsi, la souris se déplacera vers ce point. On peut faire une erreur et une méthode d'essai pour passer aux différentes positions de l'écran.
Public void mousePress (boutons int)
On peut imaginer cette fonctionnalité avec les fonctionnalités keyPress pour obtenir une conception claire. Cette méthode simule les fonctions mousePress.
Suivez l'extrait de code ci-dessous:
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Public void mouseRelease (boutons int)
On peut imaginer cette fonctionnalité avec les fonctionnalités keyPress pour obtenir une conception claire. Cette méthode simule les fonctions mousePress.
Suivez l'extrait de code ci-dessous:
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Noter :Il existe plusieurs autres méthodes d'exploration. Mais les méthodes ci-dessus sont les plus fréquemment utilisées. Cependant, pour explorer d'autres méthodes, vous pouvez rechercher la classe Robot Java dans les documents Oracle.
Utilisation de la classe de robot en Java
Quand et où pouvons-nous utiliser Robot Class en Java pour améliorer efficacement les fonctionnalités dans un cadre d'automatisation?
Comme nous le savons tous, Selenium peut être utilisé pour automatiser des applications Web. Ces applications Web dans Selenium utilisent l'objet Web sous-jacent (localisateurs) de l'application Web pour déterminer la position sur la page Web et fonctionner en conséquence. Maintenant, dans certains cas, nous voyons que nous devons gérer la fenêtre d'authentification Windows ou toute autre fenêtre contextuelle lors de l'automatisation sur le système d'exploitation Windows.
Selenium ne peut pas automatiser les actions Windows, mais nous pouvons utiliser Robot Class en Java pour accomplir la tâche.
Exemples de classes de robots Java
Exemple 1: Utilisation de la classe Robot pour automatiser certaines fonctionnalités de Windows
Parfois, toute petite partie / module de l'ensemble de l'application Web peut être conçu en flash. Nous pouvons utiliser la classe Robot pour gérer cette partie. Puisque les objets Web restent masqués pour la pièce conçue en flash.
comment ouvrir un fichier .dat dans windows
Les éditeurs de texte enrichi, qui restent parfois intégrés dans les applications Web, sont une autre fonctionnalité importante qui peut être automatisée à l'aide de Robot Class en Java. Il existe plusieurs fonctions opérationnelles dans les éditeurs RTF qui sont assez faciles à automatiser en utilisant cette classe.
Exemple 2: Utilisation de Robot Class pour automatiser les champs RTF
Noter :Il existe d'autres outils open source disponibles sur le marché comme IT automatique (spécialement conçu pour automatiser l'interface graphique de Windows), Sikuli (outil de traitement d'image), etc. pour accomplir des tâches similaires.
C'est vrai, mais Robot Class en Java est fourni avec JDK. Ainsi, nous n'avons besoin d'aucun autre outil pour installer, c'est un avantage direct si l'on utilise un framework d'automatisation basé sur Java.
Automatiser les champs RTF
Exemple d'image:
Exemple d'extrait:
import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class javainteraction { public void seleniumwithjava() throws AWTException, InterruptedException { System.setProperty('webdriver.chrome.driver', 'D://chromedriver//chromedriver.exe'); WebDriver driver =new ChromeDriver(); driver.get('https://www.tinymce.com' ); driver.manage().window().maximize(); driver.findElement(By.xpath('(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)')).click(); Robot r = new Robot(); String text = 'Welcome to the world of automation.'; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); Thread.sleep(1000); String text1 = 'Hope you enjoy This'; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); driver.findElement(By.xpath('(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)')).click(); } public static void main(String args()) throws AWTException, InterruptedException { javainteraction j1 = new javainteraction(); j1.seleniumwithjava(); } }
Ici, deux fonctionnalités des éditeurs RTF ont été automatisées à l'aide de l'icône gras et italique.
Automatisation de certaines fonctionnalités de Windows
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; public class RobotJ { public static void main(String() args) { // TODO Auto-generated method stub Robot robot; try { robot = new Robot(); robot.mouseMove(0, 900); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(300, 490); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); robot.delay(1000); robot.mouseMove(400, 690); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(1300, 150); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Cet extrait de code traite généralement du démarrage à droite de l'icône de démarrage jusqu'à l'affichage de la configuration du système. En utilisant un concept similaire, on peut également gérer la génération de fenêtres contextuelles lors du lancement ou entre les opérations sur une page Web.
Conseils pour incorporer Robot Java dans le framework Java + Selenium existant
Maintenant, nous allons voir comment modifier le morceau de code démontré ci-dessus afin que nous puissions l'intégrer dans un framework Selenium + Java existant.
Veuillez noter qu'il s'agit d'un concept et qu'il existe de nombreuses autres façons d'accomplir la même chose. Nous pouvons étendre / modifier davantage ce concept pour répondre aux besoins commerciaux qui peuvent varier d'un projet à l'autre.
Tout d'abord, créez une classe qui contiendra toutes les méthodes disponibles de la classe commune ou de la classe Robot afin que chaque fois que cela soit nécessaire, nous puissions utiliser ces méthodes pour toutes les autres classes où nous écrivons des cas de test.
Les extraits de code ci-dessous illustrent ceci:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; public class CommonRobotMethods { Robot robot; int a= 0,b= 900; //This value can be exported from property file or excel sheet instead of direct input to the code public void LeftClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } public void MiddleClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void RightClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void MouseMove(int x, int y) throws AWTException { robot = new Robot(); robot.mouseMove(x,y); } public void KeyPressCTRL() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); } public void KeyReleaseCTRL() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_CONTROL); } public void KeyPressV() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_V); } public void KeyReleaseV() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_V); } public String RobotJavaMethods(String utilityMethod) { switch(utilityMethod) { case 'LeftClickMouse': try { LeftClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MiddleClickMouse': try { MiddleClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'RightClickMouse': try { RightClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MouseMove': try { MouseMove(a,b); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressCTRL': try { KeyPressCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseCTRL': try { KeyReleaseCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressV': try { KeyPressV(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseV': try { KeyReleaseV(); } catch(AWTException e) { //Write any thing to track the error } break; default: System.out.println('UnHandled error'); } return utilityMethod; } }
Ici, nous avons pris quelques méthodes, on peut également ajouter d'autres méthodes en fonction des besoins de leur projet.
Chaque méthode est associée à un cas de commutation, de sorte que le mot-clé case peut être utilisé quand et où cela est nécessaire.
Voyons maintenant comment nous pouvons transformer le code que nous avons écrit pour automatiser l'éditeur RTF:
Reportez-vous à l'extrait de code ci-dessous pour comprendre que:
import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class seleniumFramework { public void actualOperationalMethod() throws InterruptedException { CommonRobotMethods cm = new CommonRobotMethods(); System.setProperty('webdriver.chrome.driver', UtilityPathandLoc.Chromedriver_path); WebDriver driver =new ChromeDriver(); driver.get(UtilityPathandLoc.APPURL); driver.manage().window().maximize(); driver.findElement(By.xpath(UtilityPathandLoc.Bold_loc)).click(); String text = UtilityPathandLoc.First_input; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); Thread.sleep(1000); String text1 = UtilityPathandLoc.Second_input; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); driver.findElement(By.xpath(UtilityPathandLoc.Italics_loc)).click(); } public static void main(String args()) { seleniumFramework s1 = new seleniumFramework(); try { s1.actualOperationalMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } }
Nous créons l'objet de la classe CommonRobotMethods dans la classe seleniumFramework et accédons aux méthodes définies dans la classe CommonRobotMethods via. Changer les mots-clés définis dans la classe CommonRobotMethods.
Ici, nous avons créé une interface pour noter toutes les entrées qui peuvent être externalisées. Mais on peut diviser et écrire dans excel / properties ou interface en fonction de leur niveau de confort ou des besoins de l'entreprise.
public interface UtilityPathandLoc { String APPURL= 'https://www.tinymce.com'; String Chromedriver_path = 'D://chromedriver//chromedriver.exe'; String Bold_loc = '(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)'; String Italics_loc = '(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)'; String First_input = 'Welcome to the world of automation.'; String Second_input = 'Hope you enjoy This'; }
Conclusion
Espérons que la façon d'utiliser Robot Class dans un cadre Selenium + Java est maintenant claire. Nous souhaitons que tout le monde trouve cet article intéressant et utile pour apprendre le concept.
lecture recommandée
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Principes de base de Java: syntaxe Java, classe Java et principaux concepts Java
- Explorez les bases de Java dans Selenium avec des exemples
- Intégration de Selenium avec JMeter
- Tutoriel de classe de scanner Java avec des exemples
- Tutoriel sur les classes Java Array - Classe java.util.Arrays avec exemples
- Qu'est-ce que le vecteur Java | Tutoriel de classe vectorielle Java avec des exemples
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples