In this article we will check how to handle Keyboard and Mouse event in Selenium WebDriver.

Action Class in Selenium

Action Class in Selenium is a built-in feature provided by the selenium for handling keyboard and mouse events. It includes various operations such as multiple events clicking by control key, drag and drop events and many more. These operations from the action class are performed using the advanced user interaction API in Selenium WebDriver.

Using this we can do many actions in test scripts that we normally do with keyboard and mouse.

Handling Keyboard & Mouse Events

Handling special keyboard and mouse events are done using the Advanced User Interactions API. It contains the Actions and the Action classes that are needed when executing these events. The following are the most used keyboard and mouse events provided by the Actions class.

Method

Description

clickAndHold()

Clicks (without releasing) at the current mouse location.

contextClick()

Performs a context-click at the current mouse location. (Right Click Mouse Action)

doubleClick()

Performs a double-click at the current mouse location.

dragAndDrop(source, target)

Performs click-and-hold at the location of the source element, moves to the location of the target element, then releases the mouse.

Parameters:

source- element to emulate button down at.

target- element to move to and release the mouse at.

dragAndDropBy(source, x-offset, y-offset)

Performs click-and-hold at the location of the source element, moves by a given offset, then releases the mouse.

Parameters:

source- element to emulate button down at.

xOffset- horizontal move offset.

yOffset- vertical move offset.

keyDown(modifier_key)

Performs a modifier key press. Does not release the modifier key - subsequent interactions may assume it's kept pressed.

Parameters:

modifier_key - any of the modifier keys (Keys.ALT, Keys.SHIFT, or Keys.CONTROL)

keyUp(modifier _key)

Performs a key release.

Parameters:

modifier_key - any of the modifier keys (Keys.ALT, Keys.SHIFT, or Keys.CONTROL)

moveByOffset(x-offset, y-offset)

Moves the mouse from its current position (or 0,0) by the given offset.

Parameters:

x-offset- horizontal offset. A negative value means moving the mouse left.

y-offset- vertical offset. A negative value means moving the mouse down.

moveToElement(toElement)

Moves the mouse to the middle of the element.

Parameters:

toElement- element to move to.

release()

Releases the depressed left mouse button at the current mouse location

sendKeys(onElement, charsequence)

Sends a series of keystrokes onto the element.

Parameters:

onElement - element that will receive the keystrokes, usually a text field

charsequence - any string value representing the sequence of keystrokes to be sent

Let us consider following moveToElement() method to understand Actions class of Selenium WebDriver.

Let us automate following scenario to understand it better.

package tests;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class ActionsTest {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //code to maximize chrome browser
        driver.manage().window().maximize();

        String baseURL = "https://rahulshettyacademy.com/AutomationPractice/";
        driver.get(baseURL);

        //Code to perform mouse hover on button by the text Mouse Hover
        Actions actions = new Actions(driver);
        WebElement mouseHover =  driver.findElement(By.id("mousehover"));
        actions.moveToElement(mouseHover).build().perform();
        driver.findElement(By.linkText("Reload")).click();

        //Close chrome driver.
        driver.close();
    }
}

Let us consider example for KeyDown feature of Actions Class.

Let us automate following scenario to understand it better.

  • Open the URL : https://www.amazon.in/
  • Create object of Actions class.
  • Inspect search box and search for keyword “Samsung”

We will search Samsung key word using Actions class and KeyDown method of Actions class.

package tests;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class ActionsKeyDown {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //code to maximize chrome browser
        driver.manage().window().maximize();

        String baseURL = "https://www.amazon.in/";
        driver.get(baseURL);

        Actions actions = new Actions(driver);
        WebElement searchBox = driver.findElement(By.id("twotabsearchtextbox"));
        actions.moveToElement(searchBox).click().keyDown(Keys.SHIFT).sendKeys("Samsung").build().perform();

        //Close chrome driver
        driver.close();
    }
}

Let us consider example to perform right click on element on web page.

package tests;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class ActionsTest {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //code to maximize chrome browser
        driver.manage().window().maximize();

        String baseURL = "https://rahulshettyacademy.com/AutomationPractice/";
        driver.get(baseURL);

        //Code to perform mouse hover on button by the text Mouse Hover
        Actions actions = new Actions(driver);
        WebElement mouseHover =  driver.findElement(By.id("mousehover"));
        //code to perform right click on particular element
        actions.moveToElement(mouseHover).contextClick().build().perform();
       
        //Close chrome driver.
        driver.close();
    }
}

Summary

  • Handling special keyboard and mouse events are done using the AdvancedUserInteractions API.
  • Frequently used Keyword and Mouse Events are doubleClick(), keyUp, dragAndDropBy, contextClick & sendKeys.

Tags


You may also like

API Basics and Architecture

API Basics and Architecture
Leave a Reply

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}