Right Click Context Menu example

We will show how to work with context menu by taking a simple example. In the below example, we will first Right click on the element and the select the required option from the list of values. In the example we have also switched to an alert to verify if we have successfully clicked on the required link by using TestNG asserts

We will take the help of WebDriver action class and perform Right Click. the below is the syntax :

Right click context menu

Actions action = new Actions(driver).contextClick(element);
action.build().perform();

Below are the Steps we have followed in the example:

1. Identify the element
2. Wait for the presence of Element
3. Now perform Context click
4. After that we need to select the required link.

package com.pack.rightclick;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class RightClickExample {

	WebDriver driver;
	
	String URL = "http://medialize.github.io/jQuery-contextMenu/demo.html";
	
	@BeforeClass
	public void Setup() {
		driver = new FirefoxDriver();
		driver.manage().window().maximize();
	}
	
	@Test
	public void rightClickTest() {
		driver.navigate().to(URL);
		By locator = By.cssSelector(".context-menu-one.box");
		WebDriverWait wait = new WebDriverWait(driver, 5);
		wait.until(ExpectedConditions.presenceOfElementLocated(locator)); 
		WebElement element=driver.findElement(locator);
		rightClick(element);
		WebElement elementEdit =driver.findElement(By.cssSelector(".context-menu-item.icon.icon-edit>span"));
		elementEdit.click();
		Alert alert=driver.switchTo().alert();
		String textEdit = alert.getText();
		Assert.assertEquals(textEdit, "clicked: edit", "Failed to click on Edit link");
	}
	
	public void rightClick(WebElement element) {
		try {
			Actions action = new Actions(driver).contextClick(element);
			action.build().perform();

			System.out.println("Sucessfully Right clicked on the element");
		} catch (StaleElementReferenceException e) {
			System.out.println("Element is not attached to the page document "
					+ e.getStackTrace());
		} catch (NoSuchElementException e) {
			System.out.println("Element " + element + " was not found in DOM "
					+ e.getStackTrace());
		} catch (Exception e) {
			System.out.println("Element " + element + " was not clickable "
					+ e.getStackTrace());
		}
	}

	@AfterClass
	public void tearDown() {
		driver.quit();
	}

	
}
Selenium Tutorials: 

Comments

This implementation not working in Safari browser. Have any solution to work it on Safari browser?

Thanks,
Sanoj

Hi, I get an error on these lines By locator = By.cssSelector(".context-menu-one.box");
WebDriverWait wait = new WebDriverWait(driver, 5);
as if element not present.

u using
By locator =By.cssSlector(".context-menu-one");
WebDriverWait wait =new WebDriver(driver, 5);

its working fine.

How to right click an element without Actions,. i get exception while using Actions in Selenium3 in FireFox with GeckoDriver.
I have used the following code to set the GeckoDriver property.

System.setProperty("webdriver.gecko.driver", new File("lib/geckodriver").getAbsolutePath());

Add new comment