Bird
Raised Fist0
Selenium Javatesting~10 mins

Action methods per page in Selenium Java - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test verifies that the login page's action methods work correctly by entering valid credentials and checking successful login.

Test Code - JUnit + Selenium
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.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

class LoginPage {
    private WebDriver driver;
    private By usernameField = By.id("username");
    private By passwordField = By.id("password");
    private By loginButton = By.id("loginBtn");

    public LoginPage(WebDriver driver) {
        this.driver = driver;
    }

    public void enterUsername(String username) {
        driver.findElement(usernameField).sendKeys(username);
    }

    public void enterPassword(String password) {
        driver.findElement(passwordField).sendKeys(password);
    }

    public void clickLogin() {
        driver.findElement(loginButton).click();
    }
}

public class LoginTest {
    private WebDriver driver;
    private LoginPage loginPage;

    @BeforeEach
    public void setUp() {
        driver = new ChromeDriver();
        driver.get("https://example.com/login");
        loginPage = new LoginPage(driver);
    }

    @Test
    public void testValidLogin() {
        loginPage.enterUsername("testuser");
        loginPage.enterPassword("password123");
        loginPage.clickLogin();
        boolean loggedIn = driver.findElement(By.id("welcomeMessage")).isDisplayed();
        assertTrue(loggedIn, "User should be logged in and welcome message displayed");
    }

    @AfterEach
    public void tearDown() {
        driver.quit();
    }
}
Execution Trace - 9 Steps
StepActionSystem StateAssertionResult
1Test startsJUnit test runner initialized—PASS
2Browser opens ChromeDriverChrome browser window opened—PASS
3Navigates to https://example.com/loginLogin page loaded with username, password fields and login buttonPage URL is correctPASS
4Finds username field and enters 'testuser'Username input filled with 'testuser'Username field contains 'testuser'PASS
5Finds password field and enters 'password123'Password input filled with 'password123'Password field contains 'password123'PASS
6Finds and clicks login buttonLogin form submitted, page navigates—PASS
7Finds welcome message element by id 'welcomeMessage'Welcome message displayed on pageWelcome message is displayedPASS
8Assertion checks user is logged in by verifying welcome message visibilityTest verifies login successassertTrue(loggedIn) passesPASS
9Browser closes and test endsChrome browser closed—PASS
Failure Scenario
Failing Condition: Welcome message element not found after login attempt
Execution Trace Quiz - 3 Questions
Test your understanding
What action does the test perform after opening the login page?
AEnter username and password using page action methods
BDirectly click the login button without entering credentials
CClose the browser immediately
DNavigate to a different URL
Key Result
Using action methods in page classes helps keep test code clean and reusable by separating page interactions from test logic.

Practice

(1/5)
1. What is the main purpose of action methods in a Selenium page object?
easy
A. To represent user actions like clicking or typing on the page
B. To store test data for validation
C. To configure browser settings
D. To generate test reports automatically

Solution

  1. Step 1: Understand the role of action methods

    Action methods are designed to perform user interactions such as clicking buttons or entering text.
  2. Step 2: Differentiate from other page object responsibilities

    Storing data, configuring browsers, or generating reports are not the role of action methods.
  3. Final Answer:

    To represent user actions like clicking or typing on the page -> Option A
  4. Quick Check:

    Action methods = user actions [OK]
Hint: Action methods do what a user does on the page [OK]
Common Mistakes:
  • Confusing action methods with data storage
  • Thinking action methods configure the browser
  • Assuming action methods generate reports
2. Which of the following is the correct way to define an action method that clicks a button using Selenium Java?
easy
A. public void clickButton() { driver.findElement(By.id("btn")).getText(); }
B. public void clickButton() { driver.findElement(By.id("btn")).click(); }
C. public void clickButton() { driver.findElement(By.id("btn")).sendKeys(); }
D. public void clickButton() { driver.findElement(By.id("btn")).clear(); }

Solution

  1. Step 1: Identify the correct Selenium method for clicking

    The method click() performs a click action on the element.
  2. Step 2: Check the other methods

    sendKeys() types text, getText() reads text, and clear() clears input fields.
  3. Final Answer:

    public void clickButton() { driver.findElement(By.id("btn")).click(); } -> Option B
  4. Quick Check:

    Click action uses click() method [OK]
Hint: Click uses click(), not sendKeys() or getText() [OK]
Common Mistakes:
  • Using sendKeys() instead of click() to click
  • Calling getText() which only reads text
  • Using clear() which clears input fields
3. Given the following action method in a page object:
public void enterUsername(String name) {
    driver.findElement(By.name("username")).sendKeys(name);
}

What will happen when enterUsername("testUser") is called?
medium
A. The text "testUser" will be typed into the username input field
B. The username input field will be cleared
C. An error will occur because sendKeys requires no arguments
D. The username input field will be clicked but not typed

Solution

  1. Step 1: Understand sendKeys() usage

    The sendKeys() method types the given string into the located input field.
  2. Step 2: Analyze the method call

    Calling enterUsername("testUser") passes "testUser" to sendKeys(), so it types this text.
  3. Final Answer:

    The text "testUser" will be typed into the username input field -> Option A
  4. Quick Check:

    sendKeys("text") types text [OK]
Hint: sendKeys(text) types text into input fields [OK]
Common Mistakes:
  • Thinking sendKeys() clears the field
  • Believing sendKeys() takes no arguments
  • Confusing click() with sendKeys()
4. Consider this action method:
public void submitForm() {
    driver.findElement(By.id("submitBtn")).click();
    driver.findElement(By.id("submitBtn")).click();
}

What is the issue with this method?
medium
A. It does not locate the submit button correctly
B. It uses an invalid locator syntax
C. It will cause a compilation error due to duplicate lines
D. It clicks the submit button twice unnecessarily

Solution

  1. Step 1: Review the method actions

    The method calls click() on the same button twice in a row.
  2. Step 2: Understand the impact

    Clicking twice may cause unexpected behavior or duplicate submissions.
  3. Final Answer:

    It clicks the submit button twice unnecessarily -> Option D
  4. Quick Check:

    Duplicate clicks cause redundant actions [OK]
Hint: Avoid repeating click() on same element twice [OK]
Common Mistakes:
  • Thinking duplicate lines cause compile errors
  • Assuming locator syntax is wrong
  • Believing the button is not found
5. You want to create an action method that selects a checkbox only if it is not already selected. Which of the following is the best implementation?
hard
A. public void selectCheckbox() { WebElement checkbox = driver.findElement(By.id("agree")); checkbox.isSelected(); }
B. public void selectCheckbox() { driver.findElement(By.id("agree")).click(); }
C. public void selectCheckbox() { WebElement checkbox = driver.findElement(By.id("agree")); if (!checkbox.isSelected()) { checkbox.click(); } }
D. public void selectCheckbox() { WebElement checkbox = driver.findElement(By.id("agree")); checkbox.clear(); }

Solution

  1. Step 1: Check if checkbox is already selected

    Use isSelected() to verify checkbox state before clicking.
  2. Step 2: Click only if not selected

    Clicking only when unchecked prevents unchecking it accidentally.
  3. Final Answer:

    public void selectCheckbox() { WebElement checkbox = driver.findElement(By.id("agree")); if (!checkbox.isSelected()) { checkbox.click(); } } -> Option C
  4. Quick Check:

    Check isSelected() before click to avoid toggling [OK]
Hint: Click checkbox only if not selected using isSelected() [OK]
Common Mistakes:
  • Clicking checkbox without checking state
  • Calling isSelected() without action
  • Using clear() on checkbox which is invalid
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