robot class selenium webdriver with java
In diesem Tutorial werden die Verwendung, Beispiele und Funktionen der Roboterklasse in Java und ihre Integration in Selenium Framework erläutert:
Roboter Java ist ein Roboter Klasse in der Java AWT-Paket. Es wird im Allgemeinen verwendet, um Tastatur- und Mausoperationen in Echtzeit zu simulieren, die wir manuell ausführen.
Der Hauptzweck der Roboterklasse in Java ist die Automatisierung. Das Schöne daran ist, dass es leicht in das aktuelle Automatisierungsframework integriert werden kann, um seine Reichweite zu erhöhen.
Was du lernen wirst:
- Roboterklasse in Java
- Fazit
Roboterklasse in Java
In diesem Tutorial lernen wir die Selenium-Integration mit Robot Class in Java kennen. Im Allgemeinen kann Java Robot Class jedoch in jedem auf Java basierenden Automatisierungsframework verwendet werden.
Funktionen der Roboterklasse simulieren
Es gibt viele Funktionen der Roboterklasse in Java. Nachfolgend sind einige bekannte Methoden aufgeführt, die mit ihnen verbunden sind:
# 1) Tastaturfunktionen
Die Tastaturfunktionen der Robot-Klasse befassen sich im Allgemeinen mit der Simulation verschiedener auf den Tastaturen verfügbarer Tasten und deren Bedienung.
Public void keyPress (int keycode)
Diese Funktion drückt die Eingabeparametertaste. Um den Vorgang abzuschließen, sollte die Schlüsselfreigabemethode verwendet werden.
Folgen Sie dem folgenden Code-Snippet:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Hier im obigen Code-Snippet drücken wir nur STRG + V. Die Methode KeyEvent ist mit anderen Tasten verknüpft, die für unsere Tastatur verfügbar sind. Man kann sie alle ausprobieren.
Public void keyRelease (int keycode)
Diese Methode gibt den Eingabeparameterschlüssel frei. Dies ist die Nachbearbeitung der Tastendruckmethode.
Folgen Sie dem folgenden Code-Snippet:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Hier im obigen Code-Snippet geben wir nur STRG + V frei. Ähnlich wie oben angegeben, ist die Methode KeyEvent auch anderen Tasten zugeordnet, die für unsere Tastatur verfügbar sind. Man kann sie alle ausprobieren.
# 2) Mausfunktionen
Die Mausfunktionen befassen sich mit der Simulation verschiedener Operationen der Maus.
Public void mouseMove (int x, int y)
Hier bestimmen die beiden Parameter die Koordinaten des Bildschirms. Sobald wir die Koordinaten angegeben haben, bewegt sich die Maus zum Punkt der angegebenen Koordinaten des Bildschirms.
Folgen Sie dem angegebenen Code-Snippet:
robot.mouseMove (0, 900);
Hier ist die Position des x-Parameters 0 und der y-Parameter 900. Die Maus bewegt sich also zu diesem Punkt. Man kann eine Fehler- und Versuchsmethode ausführen, um zu den verschiedenen Positionen des Bildschirms zu gelangen.
Public void mousePress (int-Tasten)
Man kann sich diese Funktionalität mit keyPress-Funktionen vorstellen, um eine klare Vorstellung zu erhalten. Diese Methode simuliert mousePress-Funktionen.
Folgen Sie dem folgenden Code-Snippet:
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 (int-Schaltflächen)
Man kann sich diese Funktionalität mit keyPress-Funktionen vorstellen, um eine klare Vorstellung zu erhalten. Diese Methode simuliert mousePress-Funktionen.
Folgen Sie dem folgenden Code-Snippet:
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
Hinweis ::Es gibt verschiedene andere Methoden zur Erkundung. Die oben genannten Methoden werden jedoch am häufigsten verwendet. Um jedoch andere Methoden zu untersuchen, kann in Oracle-Dokumenten nach der Robot Java-Klasse gesucht werden.
Verwendung der Roboterklasse in Java
Wann und wo können wir Robot Class in Java verwenden, um die Funktionalität in einem Automatisierungsframework effektiv zu verbessern?
Wie wir alle wissen, kann Selen zur Automatisierung von Webanwendungen verwendet werden. Diese Webanwendungen in Selenium verwenden das zugrunde liegende Webobjekt (Locators) der Webanwendung, um die Position auf der Webseite zu bestimmen und entsprechend zu arbeiten. In bestimmten Fällen müssen wir das Windows-Authentifizierungs-Popup oder ein anderes Windows-Popup bei der Automatisierung unter dem Windows-Betriebssystem verarbeiten.
Selenium kann Windows-Aktionen nicht automatisieren, aber wir können die Roboterklasse in Java verwenden, um die Aufgabe auszuführen.
Beispiele für Java-Roboterklassen
Beispiel 1: Verwenden der Roboterklasse zum Automatisieren einiger Windows-Funktionen
Manchmal kann ein kleiner Teil / ein kleines Modul der gesamten Webanwendung in Flash entworfen werden. Wir können die Robot-Klasse verwenden, um diesen Teil zu behandeln. Da bleiben Webobjekte für das in Flash entworfene Teil verborgen.
wie man eine apk datei unter windows öffnet
Eine weitere wichtige Funktion, die mithilfe der Roboterklasse in Java automatisiert werden kann, sind Rich-Text-Editoren, die manchmal in Webanwendungen eingebettet bleiben. In RTF-Editoren gibt es mehrere Betriebsfunktionen, die mit dieser Klasse recht einfach zu automatisieren sind.
Beispiel 2: Verwenden der Roboterklasse zum Automatisieren von RTF-Feldern
Hinweis ::Es gibt andere Open-Source-Tools auf dem Markt wie Auto IT (speziell entwickelt, um die Windows-Benutzeroberfläche zu automatisieren), Sikuli (Bildverarbeitungswerkzeug) usw., um ähnliche Aufgaben auszuführen.
Dies ist wahr, aber die Robot Class in Java wird mit JDK geliefert. Daher benötigen wir kein anderes Tool zur Installation. Dies ist ein klarer Vorteil, wenn Sie ein Java-basiertes Automatisierungsframework verwenden.
RTF-Felder automatisieren
Beispielbild:
Beispiel-Snippet:
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(); } }
Hier wurden zwei Funktionen der RTF-Editoren mithilfe des fett und kursiv gedruckten Symbols automatisiert.
Automatisieren einiger Windows-Funktionen
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(); } } }
Dieses Code-Snippet behandelt im Allgemeinen vom Startsymbol bis zur Anzeige der Systemkonfiguration. Mit einem ähnlichen Konzept kann man auch das Generieren von Windows-Popups während des Initiierens oder zwischen Operationen auf einer Webseite handhaben.
Tipps zum Integrieren von Roboter-Java in vorhandenes Java + Selenium Framework
Jetzt werden wir sehen, wie Sie den oben gezeigten Code so ändern können, dass wir ihn in ein vorhandenes Selenium + Java-Framework integrieren können.
Bitte beachten Sie, dass dies ein Konzept ist und es viele andere Möglichkeiten gibt, dies zu erreichen. Wir können dieses Konzept weiter erweitern / modifizieren, um den Geschäftsanforderungen gerecht zu werden, die von Projekt zu Projekt variieren können.
Erstellen Sie zunächst eine Klasse, die alle gängigen oder von Robot-Klassen zur Verfügung gestellten Methoden enthält, damit wir diese Methoden bei Bedarf für alle anderen Klassen verwenden können, in denen wir Testfälle schreiben.
Die folgenden Codeausschnitte zeigen dies:
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; } }
Hier haben wir einige Methoden gewählt, man kann auch andere Methoden entsprechend ihren Projektanforderungen hinzufügen.
Jede Methode ist an einen Switch-Fall angehängt, sodass das Schlüsselwort case bei Bedarf verwendet werden kann.
Nun wollen wir sehen, wie wir den Code, den wir geschrieben haben, um den RTF-Editor zu automatisieren, transformieren können:
Lesen Sie das folgende Codefragment, um Folgendes zu verstehen:
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(); } } }
Wir erstellen das Objekt der CommonRobotMethods-Klasse innerhalb der seleniumFramework-Klasse und greifen über auf die in der CommonRobotMethods-Klasse definierten Methoden zu. Wechseln Sie die in der CommonRobotMethods-Klasse definierten Schlüsselwörter.
Hier haben wir eine Schnittstelle erstellt, um alle Eingaben aufzuschreiben, die externalisiert werden können. Aber man kann Excel / Eigenschaften oder Schnittstellen entsprechend ihrem Komfortniveau oder ihren Geschäftsanforderungen teilen und schreiben.
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'; }
Fazit
Hoffentlich ist jetzt klar, wie Robot Class in einem Selenium + Java-Framework verwendet werden kann. Wir wünschen allen, dass dieser Artikel interessant und hilfreich für das Erlernen des Konzepts ist.
Literatur-Empfehlungen
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Java-Grundlagen: Java-Syntax, Java-Klasse und Java-Kernkonzepte
- Entdecken Sie die Grundlagen von Java in Selen anhand von Beispielen
- Integration von Selen mit JMeter
- Java Scanner Class Tutorial mit Beispielen
- Java Array Class Tutorial - java.util.Arrays-Klasse mit Beispielen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Java Interface und Abstract Class Tutorial mit Beispielen