Bird
Raised Fist0
Selenium Javatesting~10 mins

Context click (right click) in Selenium Java - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test performs a right-click (context click) on a specific element on a webpage and verifies that the context menu appears as expected.

Test Code - JUnit with Selenium WebDriver
Selenium Java
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;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.time.Duration;

public class ContextClickTest {
    private WebDriver driver;
    private WebDriverWait wait;

    @BeforeEach
    public void setUp() {
        driver = new ChromeDriver();
        wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    }

    @Test
    public void testContextClickShowsMenu() {
        driver.get("https://swisnl.github.io/jQuery-contextMenu/demo.html");

        WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("span.context-menu-one.btn.btn-neutral")));

        Actions actions = new Actions(driver);
        actions.contextClick(button).perform();

        WebElement contextMenu = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ul.context-menu-list")));

        assertTrue(contextMenu.isDisplayed(), "Context menu should be visible after right click");
    }

    @AfterEach
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}
Execution Trace - 7 Steps
StepActionSystem StateAssertionResult
1Test starts and Chrome browser opensChrome browser window is open and ready—PASS
2Navigates to URL https://swisnl.github.io/jQuery-contextMenu/demo.htmlPage with a button labeled 'right click me' is loaded—PASS
3Waits until the button with CSS selector 'span.context-menu-one.btn.btn-neutral' is clickableButton is visible and enabled on the pageButton is clickablePASS
4Performs context click (right click) on the button using Actions classContext menu is triggered to appear—PASS
5Waits until the context menu with CSS selector 'ul.context-menu-list' is visibleContext menu is displayed on the pageContext menu is visiblePASS
6Asserts that the context menu is displayedContext menu is visibleassertTrue(contextMenu.isDisplayed())PASS
7Test ends and browser closesBrowser window is closed—PASS
Failure Scenario
Failing Condition: The context menu does not appear after right-clicking the button
Execution Trace Quiz - 3 Questions
Test your understanding
What Selenium method is used to perform a right-click on an element?
Aelement.click()
Bactions.doubleClick(element).perform()
Cactions.contextClick(element).perform()
Ddriver.rightClick(element)
Key Result
Always wait explicitly for elements to be clickable or visible before interacting or asserting to avoid flaky tests.

Practice

(1/5)
1. What does the contextClick() method in Selenium WebDriver do?
easy
A. Simulates typing text into a web element
B. Simulates a right-click on a web element
C. Simulates a drag and drop action
D. Simulates a double-click on a web element

Solution

  1. Step 1: Understand the purpose of contextClick()

    The contextClick() method is designed to simulate a right-click action on a web element, which is different from a normal click.
  2. Step 2: Compare with other mouse actions

    Double-click, drag and drop, and typing are different actions and have their own methods like doubleClick(), dragAndDrop(), and sendKeys().
  3. Final Answer:

    Simulates a right-click on a web element -> Option B
  4. Quick Check:

    contextClick() = right-click [OK]
Hint: Right-click action in Selenium uses contextClick() [OK]
Common Mistakes:
  • Confusing contextClick() with doubleClick()
  • Using click() instead of contextClick() for right-click
  • Trying to send keys for right-click action
2. Which of the following is the correct syntax to perform a right-click on a web element using Selenium Java?
easy
A. Actions.contextClick(element).perform();
B. driver.contextClick(element).perform();
C. new Actions(driver).contextClick(element).perform();
D. driver.actions().contextClick(element).perform();

Solution

  1. Step 1: Identify the correct Actions class usage

    In Selenium Java, Actions is instantiated with the WebDriver instance, e.g., new Actions(driver).
  2. Step 2: Use contextClick() on the Actions object and call perform()

    The method chain is new Actions(driver).contextClick(element).perform(); to execute the right-click.
  3. Final Answer:

    new Actions(driver).contextClick(element).perform(); -> Option C
  4. Quick Check:

    Actions object + contextClick + perform() = correct syntax [OK]
Hint: Always create Actions object with driver before contextClick() [OK]
Common Mistakes:
  • Calling contextClick() directly on driver
  • Using static call on Actions without new keyword
  • Missing perform() at the end
3. What will happen when the following Selenium Java code is executed?
WebElement element = driver.findElement(By.id("menu"));
new Actions(driver).contextClick(element).perform();
medium
A. A left-click is performed on the element with id 'menu'
B. Nothing happens because perform() is missing
C. An exception is thrown because contextClick() requires coordinates
D. A right-click is performed on the element with id 'menu'

Solution

  1. Step 1: Locate the element by id 'menu'

    The code finds the web element with id="menu" correctly using findElement(By.id("menu")).
  2. Step 2: Perform contextClick() on the found element

    The contextClick(element).perform() chain performs a right-click on that element.
  3. Final Answer:

    A right-click is performed on the element with id 'menu' -> Option D
  4. Quick Check:

    contextClick(element).perform() = right-click on element [OK]
Hint: contextClick(element).perform() triggers right-click on that element [OK]
Common Mistakes:
  • Thinking contextClick needs coordinates always
  • Confusing left-click with right-click
  • Forgetting to call perform()
4. Identify the error in the following Selenium Java code snippet that tries to right-click on a button:
WebElement button = driver.findElement(By.name("submit"));
Actions action = new Actions(driver);
action.contextClick().perform();
medium
A. contextClick() is called without specifying the element
B. Actions object is not created properly
C. perform() is missing after contextClick()
D. findElement locator is incorrect

Solution

  1. Step 1: Check contextClick() usage

    The method contextClick() requires either no argument (to right-click at current mouse location) or a WebElement argument to specify where to right-click. Here, no argument is passed but no mouse position is set.
  2. Step 2: Confirm if element is specified

    The code finds the button element but does not pass it to contextClick(), so it will not right-click on the button.
  3. Final Answer:

    contextClick() is called without specifying the element -> Option A
  4. Quick Check:

    contextClick() needs element or mouse position [OK]
Hint: Always pass element to contextClick() to right-click on it [OK]
Common Mistakes:
  • Calling contextClick() without element or mouse position
  • Forgetting perform() after contextClick()
  • Assuming findElement locator is wrong without checking
5. You want to test a custom context menu that appears on right-clicking a list item. Which Selenium Java code snippet correctly performs a right-click on the first list item and then clicks the 'Delete' option from the context menu?
WebElement listItem = driver.findElement(By.cssSelector("ul#items li:first-child"));
WebElement deleteOption = driver.findElement(By.id("delete"));
// What next?
hard
A. new Actions(driver).contextClick(listItem).perform(); deleteOption.click();
B. new Actions(driver).click(listItem).contextClick(deleteOption).perform();
C. new Actions(driver).contextClick(listItem).click(deleteOption).perform();
D. new Actions(driver).contextClick(deleteOption).click(listItem).perform();

Solution

  1. Step 1: Right-click on the first list item

    Use contextClick(listItem).perform() to open the custom context menu on the list item.
  2. Step 2: Click the 'Delete' option separately

    After the context menu appears, click the 'Delete' option using deleteOption.click(); as it is a normal click on a visible element.
  3. Final Answer:

    new Actions(driver).contextClick(listItem).perform(); deleteOption.click(); -> Option A
  4. Quick Check:

    Right-click then normal click separately for context menu actions [OK]
Hint: Right-click then click menu option separately for context menus [OK]
Common Mistakes:
  • Chaining click on menu option inside Actions after contextClick
  • Clicking wrong element first
  • Not calling perform() after contextClick
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard