robot class selenium webdriver with java
Questo tutorial spiega usi, esempi e funzionalità della classe Robot in Java e la sua integrazione con Selenium Framework:
Robot Java è un file Robot classe in Giava Pacchetto AWT. Viene generalmente utilizzato per simulare operazioni di tastiera e mouse in tempo reale che eseguiamo manualmente.
Lo scopo principale della classe Robot in Java è l'automazione. Il bello è che può essere facilmente integrato con l'attuale quadro di automazione per aumentarne la portata.
Cosa imparerai:
- Classe di robot in Java
- Conclusione
Classe di robot in Java
In questo tutorial, impareremo l'integrazione di Selenium con Robot Class in Java, ma in generale, Java Robot Class può essere utilizzato in qualsiasi framework di automazione costruito su Java.
Funzionalità di simulazione della classe di robot
Ci sono molte funzionalità di Robot Class in Java, di seguito sono elencati alcuni metodi noti ad esse associati:
# 1) Funzionalità della tastiera
Le funzionalità di tastiera della classe Robot si occupano generalmente della simulazione di diversi tasti disponibili nelle tastiere e delle loro operazioni.
Public void keyPress (int keycode)
Questa funzione preme il tasto del parametro di input. Per completare l'operazione è necessario utilizzare il metodo di rilascio della chiave.
Segui lo snippet di codice seguente:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Qui, nello snippet di codice sopra, stiamo solo premendo CTRL + V. Il metodo KeyEvent è associato ad altri tasti disponibili sulla nostra tastiera. Si possono provare tutti.
Public void keyRelease (int keycode)
Questo metodo rilascia la chiave del parametro di input. Questa è la post-operazione al metodo di pressione dei tasti.
Segui lo snippet di codice seguente:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Qui nello snippet di codice sopra, stiamo solo rilasciando CTRL + V. Analogamente a quanto detto sopra, il metodo KeyEvent è associato anche ad altri tasti disponibili sulla nostra tastiera. Si possono provare tutti.
# 2) Funzionalità del mouse
Le funzionalità del mouse riguardano la simulazione di diverse operazioni del mouse.
Public void mouseMove (int x, int y)
Qui, i due parametri determinano le coordinate dello schermo. Una volta fornite le coordinate, il mouse si sposta sul punto delle coordinate dello schermo.
Segui lo snippet di codice fornito:
robot.mouseMove (0, 900);
Qui, la posizione del parametro x è 0 e il parametro y è 900. Quindi il mouse si sposterà su quel punto. Si può fare un errore e un metodo di prova per spostarsi nelle varie posizioni dello schermo.
Public void mousePress (pulsanti int)
Si può immaginare questa funzionalità con le funzionalità keyPress per ottenere una chiara concezione. Questo metodo simula le funzioni di mousePress.
Segui lo snippet di codice seguente:
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 (pulsanti int)
Si può immaginare questa funzionalità con le funzionalità keyPress per ottenere una chiara concezione. Questo metodo simula le funzioni di mousePress.
Segui lo snippet di codice seguente:
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
Nota :Sono disponibili molti altri metodi per l'esplorazione. Ma i metodi di cui sopra sono i più usati. Tuttavia, per esplorare altri metodi, è possibile cercare la classe Robot Java nei documenti Oracle.
Uso della classe robot in Java
Quando e dove possiamo utilizzare Robot Class in Java per migliorare la funzionalità in modo efficace in un framework di automazione?
Come tutti sappiamo, il selenio può essere utilizzato per automatizzare le applicazioni web. Queste applicazioni Web in Selenium utilizzano l'oggetto Web sottostante (localizzatori) dell'app Web per determinare la posizione sulla pagina Web e operare di conseguenza. Ora, in alcuni casi, vediamo che dobbiamo gestire il popup di autenticazione di Windows o qualsiasi altro popup di Windows durante l'automazione sul sistema operativo Windows.
Il selenio non può automatizzare le azioni di Windows ma possiamo usare Robot Class in Java per eseguire l'operazione.
Esempi di classi di robot Java
Esempio 1: Utilizzo della classe Robot per automatizzare alcune funzionalità di Windows
A volte qualsiasi piccola parte / modulo dell'intera applicazione web può essere progettata in flash. Possiamo usare la classe Robot per gestire quella parte. Poiché gli oggetti web rimangono nascosti per la parte progettata in flash.
quale strato del modello osi viene utilizzato per cose come segnali, bit, cavi e connettori?
Un'altra importante caratteristica che può essere automatizzata utilizzando Robot Class in Java è il Rich Text Editors, che a volte rimane incorporato nelle applicazioni web. Ci sono diverse funzioni operative negli editor RTF che è abbastanza facile da automatizzare usando questa classe.
Esempio 2: Utilizzo della classe Robot per automatizzare i campi RTF
Nota :Ci sono altri strumenti open source disponibili sul mercato come Auto IT (appositamente progettato per automatizzare la GUI di Windows), Sikuli (strumento di elaborazione delle immagini), ecc. per eseguire attività simili.
Questo è vero ma Robot Class in Java viene fornito con JDK. Pertanto, non abbiamo bisogno di altri strumenti per l'installazione, questo è un vantaggio se si utilizza un framework di automazione basato su Java.
Automatizzazione dei campi RTF
Immagine di esempio:
Snippet di esempio:
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(); } }
Qui, due funzionalità degli editor RTF sono state automatizzate utilizzando l'icona in grassetto e corsivo.
Automazione di alcune funzionalità di 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(); } } }
Questo frammento di codice generalmente si occupa del diritto a partire dall'icona di avvio per visualizzare la configurazione del sistema. Utilizzando un concetto simile si può anche gestire la generazione di finestre pop-up durante l'avvio o tra le operazioni su una pagina web.
Suggerimenti per incorporare Robot Java in Java esistente + Selenium Framework
Ora vedremo come modificare il codice sopra dimostrato in modo da poterlo adattare in un framework Selenium + Java esistente.
Si prega di notare che questo è un concetto e ci sono molti altri modi per ottenere lo stesso risultato. Possiamo estendere / modificare ulteriormente questo concetto per soddisfare le esigenze aziendali che possono variare da progetto a progetto.
Innanzitutto, crea una classe che conterrà tutti i metodi resi disponibili dalla classe comune o Robot in modo che ogni volta che è richiesto possiamo utilizzare quei metodi per qualsiasi altra classe in cui stiamo scrivendo casi di test.
I frammenti di codice seguenti dimostrano questo:
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; } }
Qui abbiamo preso alcuni metodi, si possono aggiungere allo stesso modo altri metodi in base alle loro esigenze di progetto.
Ogni metodo è associato a un caso switch, in modo che la parola chiave case possa essere utilizzata quando e dove richiesto.
Ora vediamo come possiamo trasformare il codice che abbiamo scritto per automatizzare l'editor RTF:
Fare riferimento allo snippet di codice riportato di seguito per comprendere che:
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(); } } }
Stiamo creando l'oggetto della classe CommonRobotMethods all'interno della classe seleniumFramework e accedendo ai metodi definiti nella classe CommonRobotMethods tramite. Cambia parole chiave definite nella classe CommonRobotMethods.
Qui abbiamo creato un'interfaccia per annotare tutti gli input che possono essere esternalizzati. Ma si può dividere e scrivere in Excel / proprietà o interfaccia in base al proprio livello di comfort o alle esigenze aziendali.
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'; }
Conclusione
Si spera che ora sia chiaro come utilizzare Robot Class all'interno di un framework Selenium + Java. Ci auguriamo che tutti trovino questo articolo interessante e utile per l'apprendimento del concetto.
Lettura consigliata
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Nozioni di base su Java: sintassi Java, classe Java e concetti principali di Java
- Esplora gli elementi essenziali di Java in selenio con esempi
- Integrazione del selenio con JMeter
- Tutorial di classe per scanner Java con esempi
- Tutorial Java Array Class - classe java.util.Arrays con esempi
- Cos'è Java Vector | Tutorial Java Vector Class con esempi
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi