Bird
Raised Fist0
Selenium Javatesting~15 mins

First Selenium Java test - Build an Automation Script

Choose your learning style10 modes available
Verify Google Search Page Title
Preconditions (2)
Step 1: Open Chrome browser
Step 2: Navigate to 'https://www.google.com'
Step 3: Wait until the page is fully loaded
Step 4: Get the page title
✅ Expected Result: The page title should be 'Google'
Automation Requirements - Selenium WebDriver with JUnit 5
Assertions Needed:
Verify the page title equals 'Google'
Best Practices:
Use WebDriverManager to manage driver binaries
Use explicit waits to wait for page load
Use JUnit 5 assertions
Close the browser after test
Automated Solution
Selenium Java
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.assertEquals;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.By;

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

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

    @Test
    public void testGoogleTitle() {
        driver.get("https://www.google.com");
        // Wait until the Google Search button is visible to ensure page loaded
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("btnK")));
        String title = driver.getTitle();
        assertEquals("Google", title, "Page title should be 'Google'");
    }

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

This test uses JUnit 5 and Selenium WebDriver to open Chrome and navigate to Google.

We use WebDriverManager to automatically manage the ChromeDriver binary, so no manual setup is needed.

The @BeforeEach method sets up the driver and explicit wait.

The test method opens the URL, waits explicitly for the Google Search button to appear, ensuring the page is loaded.

Then it gets the page title and asserts it equals "Google" using JUnit's assertEquals.

The @AfterEach method closes the browser to clean up.

This structure follows best practices: explicit waits, proper setup/teardown, and clear assertions.

Common Mistakes - 4 Pitfalls
Not using explicit waits and immediately asserting the title
Hardcoding the path to ChromeDriver instead of using WebDriverManager
Not closing the browser after the test
Using JUnit 4 annotations with JUnit 5 imports
Bonus Challenge

Now add data-driven testing to verify page titles for three different URLs: 'https://www.google.com', 'https://www.bing.com', and 'https://www.yahoo.com'.

Show Hint

Practice

(1/5)
1. What is the main purpose of a Selenium Java test?
easy
A. To write Java programs unrelated to browsers
B. To automate browser actions like opening a page and checking content
C. To manually test software without code
D. To design user interfaces

Solution

  1. Step 1: Understand Selenium's role

    Selenium is used to automate browser actions such as opening pages and clicking buttons.
  2. Step 2: Identify the test goal

    The main goal of a Selenium Java test is to automate browser tasks and verify web page behavior.
  3. Final Answer:

    To automate browser actions like opening a page and checking content -> Option B
  4. Quick Check:

    Selenium test = automate browser [OK]
Hint: Selenium automates browsers, not manual or UI design tasks [OK]
Common Mistakes:
  • Confusing Selenium with manual testing
  • Thinking Selenium is for UI design
  • Assuming Selenium runs non-browser Java code
2. Which of the following is the correct way to start a Chrome browser in Selenium Java?
easy
A. WebDriver driver = new ChromeDriver();
B. ChromeDriver driver = WebDriver();
C. driver = new WebDriver.Chrome();
D. WebDriver driver = ChromeDriver();

Solution

  1. Step 1: Recall Selenium WebDriver syntax

    The correct way is to declare WebDriver interface and instantiate ChromeDriver class.
  2. Step 2: Check each option's syntax

    WebDriver driver = new ChromeDriver(); uses correct Java syntax: WebDriver driver = new ChromeDriver(); others have syntax errors or wrong order.
  3. Final Answer:

    WebDriver driver = new ChromeDriver(); -> Option A
  4. Quick Check:

    Use interface = new implementation() [OK]
Hint: Use WebDriver driver = new ChromeDriver(); to start Chrome [OK]
Common Mistakes:
  • Missing 'new' keyword
  • Wrong constructor call syntax
  • Assigning without type declaration
3. What will be the output of this Selenium Java code snippet?
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
String title = driver.getTitle();
System.out.println(title);
driver.quit();

Assuming the page title is "Example Domain".
medium
A. Example Domain
B. https://example.com
C. null
D. No output, code throws error

Solution

  1. Step 1: Understand driver.getTitle()

    driver.getTitle() returns the title of the current page, which is "Example Domain" here.
  2. Step 2: Check the print statement

    System.out.println(title) prints the page title to the console.
  3. Final Answer:

    Example Domain -> Option A
  4. Quick Check:

    getTitle() prints page title [OK]
Hint: getTitle() returns page title string [OK]
Common Mistakes:
  • Confusing URL with title
  • Expecting no output
  • Assuming getTitle() returns null
4. Identify the error in this Selenium Java code snippet:
import org.openqa.selenium.By;
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
WebElement button = driver.findElement(By.id("submit"));
button.click();
driver.close();
medium
A. Missing import for By class
B. findElement should use By.name instead of By.id
C. driver.close() should be driver.quit() to close browser fully
D. button.click() is not valid for WebElement

Solution

  1. Step 1: Understand driver.close() vs driver.quit()

    driver.close() closes current tab, driver.quit() closes entire browser session.
  2. Step 2: Check best practice for test cleanup

    To fully close browser and end session, driver.quit() is preferred after test.
  3. Final Answer:

    driver.close() should be driver.quit() to close browser fully -> Option C
  4. Quick Check:

    Use quit() to close browser fully [OK]
Hint: Use driver.quit() to close browser fully after test [OK]
Common Mistakes:
  • Using driver.close() only closes one tab
  • Confusing By.id and By.name without context
  • Assuming button.click() is invalid
5. You want to write a Selenium Java test that opens a browser, navigates to "https://example.com", verifies the page title is "Example Domain", and then closes the browser. Which code snippet correctly performs this test with assertion?
hard
A. WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); assert driver.getTitle().equals("Example Domain"); driver.quit();
B. WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); if(driver.getTitle() == "Example Domain") { System.out.println("Title matches"); } driver.close();
C. WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); assert driver.getTitle() == "Example Domain"; driver.quit();
D. WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); assertEquals("Example Domain", driver.getTitle()); driver.quit();

Solution

  1. Step 1: Check assertion method correctness

    assertEquals(expected, actual) is the correct JUnit assertion method to compare strings.
  2. Step 2: Verify browser close method

    driver.quit() properly closes the browser after test.
  3. Step 3: Identify errors in other options

    WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); assert driver.getTitle().equals("Example Domain"); driver.quit(); uses plain assert with equals() but is less clear; WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); if(driver.getTitle() == "Example Domain") { System.out.println("Title matches"); } driver.close(); uses == for string comparison (wrong); WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); assert driver.getTitle() == "Example Domain"; driver.quit(); uses == in assert (wrong).
  4. Final Answer:

    assertEquals("Example Domain", driver.getTitle()); with driver.quit() -> Option D
  5. Quick Check:

    Use assertEquals for string check, quit() to close browser [OK]
Hint: Use assertEquals(expected, actual) and driver.quit() [OK]
Common Mistakes:
  • Using == to compare strings
  • Using driver.close() instead of quit()
  • Missing proper assertion method
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