Robot Class in Selenium Webdriver: Everything You Need to Know

Robot Class in Selenium Webdriver: Everything You Need to Know

Last updated on 04th Jun 2020, Blog, General

About author

Aravind (Sr Testing Manager )

He is a TOP-Rated Domain Expert with 11+ Years Of Experience, Also He is a Respective Technical Recruiter for Past 5 Years & Share's this Informative Articles For Freshers

(5.0) | 16534 Ratings 1941

Why Robot Class?

In certain Selenium Automation Tests, there is a need to control keyboard or mouse to interact with OS windows like Download pop-up, Alerts, Print Pop-ups, etc. or native Operating System applications like Notepad, Skype, Calculator, etc.

Selenium Webdriver cannot handle these OS pop-ups/applications.

In Java version 1.3 Robot Class was introduced. Robot Class can handle OS pop-ups/applications.

In this tutorial, you will learn,

  • Benefits of Robot Class
  • Documentation of Robot Class
  • Understanding Robot Class internal methods and usage
  • How to execute robot class code using testNG
  • Dis-Advantages of Robot Class

    Subscribe For Free Demo

    Benefits of Robot Class

    • Robot Class can simulate Keyboard and Mouse Event
    • Robot Class can help in upload/download of files when using selenium web driver
    • Robot Class can easily be integrated with current automation framework (keyword, data-driven or hybrid)

    Documentation of Robot Class

    Robot Class documentation will help you to understand the basic definition, syntax and usage of all methods, and functions available in Robot Class . You can view the documentation on the Official Oracle website, or you can create the documentation on your local machine.

    To create the documentation on local machine, follow the steps below-

    Step 1) You will find the src.zip file in JDK folder. Copy src.zip and extract the same in some other folder or directory (say D: or E: )

    Documentation of robot class

    Step 2) Extract src folder and Navigate to (path till src folder)/src/java/awt

    Step 3) Copy the current location of the awt folder and open command prompt.

    Step 4) In cmd, change your current directory location to awt folder and type ‘javadoc *.java’ as shown below

    AWT Folder

    Wait a while for the system to process, once completed you will see a few HTML files in the awt folder.

    Step 5) Open index.html

    Open intex HTML

    Step 6) Here you have full documentation of the awt package, from the left navigation bar click on ‘Robot’ hyperlink (See 1 marked in below image).

    awt package

    Here you can also see all the methods and interfaces of Robot Class (See 2 marked in above image).

    Understanding Robot Class internal methods and usage

    Robot Class methods can be used to interact with keyboard/mouse events while doing browser automation. Alternatively AutoIT can be used, but its drawback is that it generates an executable file (exe) which will only work on windows, so it is not a good option to use.

    Some commonly and popular used methods of Robot Class during web automation:

    • keyPress(): 

    Example:

    • robot.keyPress(KeyEvent.VK_DOWN)

    This method with press down arrow key of Keyboard.

    • mousePress()

    :Example :

    • robot.mousePress(InputEvent.BUTTON3_DOWN_MASK)

    This method will press the right click of your mouse.

    • mouseMove() : 

    Example:

    • robot.mouseMove(point.getX(), point.getY())
    Course Curriculum

    Enroll in Selenium WebDriver Training Course Led By Industry Experts

    Weekday / Weekend BatchesSee Batch Details

    This will move mouse pointer to the specified X and Y coordinates.

    • keyRelease() : 

    Example:

    • robot.keyRelease(KeyEvent.VK_DOWN)

    This method with release down arrow key of Keyboard

    • mouseRelease():

    Example:

    • robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK)

    This method will release the right click of your mouse

    Sample code to automate common use cases using Robot Class

    • Lets take example of website http://spreadsheetpage.com/index.php/file/C35/P10/ wherein after you click on a web element (.//a[@href=contains(text(),’yearly-calendar.xls’]) a O.S download pop-up appears.
    • To handle this we use Robot class (by creating an instance of Robot Class in your code say Robot robot = new Robot()) . Robot class is present in the AWT package of JDK.
    • To press down arrow key of Keyboard we use (robot.keyPress(KeyEvent.VK_DOWN))
    • To press TAB key of keyboard (we use robot.keyPress(KeyEvent.VK_TAB))
    • To press Enter key we use (robot.keyPress(KeyEvent.VK_ENTER)).

    Here is a sample 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) 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
    •      }  
    •  }

    How to execute Robot Class code using TestNG

    Since, now you aware of basic methods of Robot Class so let’s understand few more complex methods –

    Suppose you do not want to use the click method for clicking a web element.

    In such cases, you can use the mouseMove method of the Robot class.

    Step 1) mouseMove method takes x and y coordinates as parameters like robot.mouseMove(630, 420) where 630 indicates x-axis and 420 indicates y-axis. So, this method will move your mouse pointer from the current location to the mentioned x and y intersection point.

    Step 2) Next, we need to press the mouse button. We can use the method mousePress like robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

    Step 3) After press, the mouse needs to be released. We can use robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) in order to release left click of a mouse.

    Running code using testNG:

    Running code using Testng requires maven dependency of testNG or referenced library of TestNG jar file.

    TestNG maven dependency:

    • <dependency>
    • <groupId>org.testng</groupId>
    •   <artifactId>testng</artifactId>
    •   <version>6.1.1</version>
    • </dependency>

    After adding maven dependency or jar file. You need to import the Test annotation of testNG. Once it is all done, just Right click on the program code and click on Run As then click on TestNG… and you will find that code will start its execution using testNG API.

    Here is the 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 Exercise1 {
    • @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
    •     }
    • }
    Selenium Sample Resumes! Download & Edit, Get Noticed by Top Employers! Download

    Disadvantages of Robot Class

    Robot framework has few disadvantages mentioned below:

    • Keyword/mouse events will only work on current instances of Windows. E.g. suppose a code is performing any robot class event, and during the code execution user has moved to some other screen then keyword/mouse event will occur on that screen.
    • Most of the methods like mouseMove are screen resolution dependent so there might be a chance that code working on one machine might not work on another.

    Summary

    Robot class in the AWT package is used to generate keyboard/mouse events to interact with OS windows and native apps.

    The primary purpose of Robot is to support selenium automated tests project build in Java platform

    Are you looking training with Right Jobs?

    Contact Us
    Get Training Quote for Free