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. |
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. |
keyDown(modifier_key) | Performs a modifier key press. Does not release the modifier key - subsequent interactions may assume it's kept pressed. |
keyUp(modifier _key) | Performs a key release. |
moveByOffset(x-offset, y-offset) | Moves the mouse from its current position (or 0,0) by the given offset. |
moveToElement(toElement) | Moves the mouse to the middle of the element. |
release() | Releases the depressed left mouse button at the current mouse location |
sendKeys(onElement, charsequence) | Sends a series of keystrokes onto the element. |
Let us consider following moveToElement() method to understand Actions class of Selenium WebDriver.
Let us automate following scenario to understand it better.
- Open the URL : https://rahulshettyacademy.com/AutomationPractice/
- Create object of Actions class and perform mouse over action.
- Click on option Reload to perform action on that hyper link.
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.
- Open the URL : https://rahulshettyacademy.com/AutomationPractice/
- Inspect web element of “Mouse Hover”
- Create object of Actions class and perform right click using “contextClick”
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.