Bird
Raised Fist0
Selenium Javatesting~15 mins

Click actions in Selenium Java - Build an Automation Script

Choose your learning style10 modes available
Verify clicking the Submit button navigates to confirmation page
Preconditions (2)
Step 1: Locate the Submit button by its id 'submitBtn'
Step 2: Click the Submit button
Step 3: Wait for the page to load
Step 4: Verify the URL changes to 'https://example.com/confirmation'
✅ Expected Result: After clicking the Submit button, the browser navigates to the confirmation page URL 'https://example.com/confirmation'
Automation Requirements - Selenium WebDriver with Java
Assertions Needed:
Verify the Submit button is clickable before clicking
Verify the URL after clicking matches the expected confirmation page URL
Best Practices:
Use explicit waits to wait for the Submit button to be clickable
Use By.id locator for the Submit button
Use assertions from a testing framework like TestNG or JUnit
Avoid Thread.sleep; use WebDriverWait instead
Automated Solution
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.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;
import java.time.Duration;

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

    @BeforeClass
    public void setUp() {
        // Set path to chromedriver executable if needed
        driver = new ChromeDriver();
        wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        driver.manage().window().maximize();
    }

    @Test
    public void testClickSubmitButtonNavigatesToConfirmation() {
        driver.get("https://example.com/form");

        // Wait until Submit button is clickable
        WebElement submitButton = wait.until(ExpectedConditions.elementToBeClickable(By.id("submitBtn")));

        // Click the Submit button
        submitButton.click();

        // Wait until URL changes to expected confirmation page URL
        boolean urlChanged = wait.until(ExpectedConditions.urlToBe("https://example.com/confirmation"));

        // Assert URL is correct
        Assert.assertTrue(urlChanged, "URL did not change to confirmation page after clicking Submit button");
    }

    @AfterClass
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}

This test uses Selenium WebDriver with Java and TestNG for assertions.

In setUp(), we start the Chrome browser and set an explicit wait of 10 seconds.

In the test method, we open the form page URL, then wait explicitly for the Submit button to be clickable using ExpectedConditions.elementToBeClickable. This avoids timing issues.

We then click the Submit button and wait until the URL changes to the expected confirmation page URL using ExpectedConditions.urlToBe.

Finally, we assert that the URL did change correctly, ensuring the click action worked as expected.

In tearDown(), we close the browser to clean up.

This approach follows best practices: using explicit waits, proper locators, and clear assertions.

Common Mistakes - 3 Pitfalls
Using Thread.sleep() instead of explicit waits
Using XPath with absolute paths for locating the Submit button
Clicking the button without checking if it is clickable
Bonus Challenge

Now add data-driven testing with 3 different form URLs and verify clicking Submit navigates to their respective confirmation pages.

Show Hint

Practice

(1/5)
1. What does the click() method do in Selenium WebDriver?
easy
A. Simulates a user clicking on a web element
B. Types text into a web element
C. Navigates to a new URL
D. Finds an element on the page

Solution

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

    The click() method is designed to simulate a user clicking on a web element like a button or link.
  2. Step 2: Differentiate from other actions

    Typing text uses sendKeys(), navigation uses get(), and finding elements uses findElement(). None of these perform clicks.
  3. Final Answer:

    Simulates a user clicking on a web element -> Option A
  4. Quick Check:

    click() = Simulate click [OK]
Hint: Click method simulates user clicks on elements [OK]
Common Mistakes:
  • Confusing click() with sendKeys()
  • Thinking click() navigates pages
  • Using click() without locating element first
2. Which of the following is the correct syntax to click a button with id "submitBtn" in Selenium Java?
easy
A. driver.click(By.id("submitBtn"));
B. driver.findElement(By.id("submitBtn")).sendKeys("click");
C. driver.findElement(By.id("submitBtn")).click();
D. driver.clickElement("submitBtn");

Solution

  1. Step 1: Locate element using findElement(By.id())

    In Selenium Java, to interact with an element, you first find it using driver.findElement(By.id("submitBtn")).
  2. Step 2: Call click() on the found element

    After locating, you call click() on the WebElement to simulate the click.
  3. Final Answer:

    driver.findElement(By.id("submitBtn")).click(); -> Option C
  4. Quick Check:

    findElement + click() = correct syntax [OK]
Hint: Always find element first, then call click() [OK]
Common Mistakes:
  • Trying to call click() directly on driver
  • Using sendKeys("click") instead of click()
  • Incorrect method names like clickElement()
3. What will happen when the following code runs if the button with id "loginBtn" is not visible on the page?
driver.findElement(By.id("loginBtn")).click();
medium
A. No action occurs, code continues silently
B. Throws ElementNotVisibleException or ElementNotInteractableException
C. The button will be clicked successfully
D. Throws NoSuchElementException

Solution

  1. Step 1: Understand element visibility requirement for click()

    Selenium requires the element to be visible and enabled to perform a click. If the element is hidden, click() fails.
  2. Step 2: Identify the exception thrown

    If the element is found but not visible, Selenium throws ElementNotVisibleException or ElementNotInteractableException, not NoSuchElementException.
  3. Final Answer:

    Throws ElementNotVisibleException or ElementNotInteractableException -> Option B
  4. Quick Check:

    Click requires visible element = Exception if hidden [OK]
Hint: Click fails if element is hidden, throws visibility exception [OK]
Common Mistakes:
  • Assuming click works on hidden elements
  • Confusing NoSuchElementException with visibility exceptions
  • Ignoring element state before clicking
4. Identify the error in the following Selenium Java code snippet:
WebElement button = driver.findElement(By.name("submit"));
button.click();

Assuming the element exists but the test fails with ElementNotInteractableException.
medium
A. The element is not visible or enabled to be clicked
B. The WebDriver instance is not initialized
C. The click() method is misspelled
D. The locator By.name("submit") is incorrect

Solution

  1. Step 1: Confirm locator correctness

    The locator By.name("submit") finds the element, so no error here.
  2. Step 2: Understand cause of ElementNotInteractableException

    This exception means the element is present but not interactable, usually because it is hidden or disabled.
  3. Final Answer:

    The element is not visible or enabled to be clicked -> Option A
  4. Quick Check:

    ElementNotInteractable = element hidden or disabled [OK]
Hint: ElementNotInteractable means element is hidden or disabled [OK]
Common Mistakes:
  • Assuming locator is wrong without checking
  • Thinking click() method is misspelled
  • Ignoring element visibility and enabled state
5. You want to click a button that only appears after hovering over a menu. Which Selenium Java approach correctly handles this scenario?
hard
A. Refresh the page and then click the button
B. Directly call click() on the button without hovering
C. Use sendKeys(Keys.ENTER) on the menu element
D. Use Actions class to move to the menu, then click the button

Solution

  1. Step 1: Understand hover-triggered elements

    Buttons that appear only after hovering require simulating mouse movement to reveal them.
  2. Step 2: Use Actions class to hover and then click

    The Selenium Actions class can move the mouse to the menu element, triggering the button to appear, then click it.
  3. Step 3: Why other options fail

    Direct click fails because button is hidden. sendKeys ENTER does not hover. Refreshing page does not reveal button.
  4. Final Answer:

    Use Actions class to move to the menu, then click the button -> Option D
  5. Quick Check:

    Hover with Actions before click = correct [OK]
Hint: Hover first with Actions, then click hidden buttons [OK]
Common Mistakes:
  • Clicking hidden elements without hover
  • Using sendKeys instead of mouse actions
  • Refreshing page expecting button to appear
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