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 :
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
Function not working in Safari
This implementation not working in Safari browser. Have any solution to work it on Safari browser?
Thanks,
Sanoj
not working
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
u using
By locator =By.cssSlector(".context-menu-one");
WebDriverWait wait =new WebDriver(driver, 5);
its working fine.
Right click without Actions using Selenium
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());
Selecting Edit, Copy , Paste options after context click ?
How do I select Edit,Copy.. options after right click (Context Click)?
Add new comment