Bird
Raised Fist0
Selenium Javatesting~15 mins

Creating new windows/tabs in Selenium Java - Automation Script Walkthrough

Choose your learning style10 modes available
Verify opening a new tab and switching between tabs
Preconditions (3)
Step 1: Open the browser and navigate to 'https://example.com'
Step 2: Click on the link or button that opens a new tab
Step 3: Switch the WebDriver context to the new tab
Step 4: Verify the URL of the new tab is 'https://example.com/newpage'
Step 5: Switch back to the original tab
Step 6: Verify the URL of the original tab is 'https://example.com'
✅ Expected Result: The new tab opens with the correct URL, and switching between tabs works as expected.
Automation Requirements - Selenium WebDriver with Java
Assertions Needed:
Assert the URL of the new tab is 'https://example.com/newpage'
Assert the URL of the original tab is 'https://example.com'
Best Practices:
Use explicit waits to handle page load
Use WebDriver's window handles to switch tabs
Close tabs properly after test
Use Page Object Model if applicable
Automated Solution
Selenium Java
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;

public class NewTabTest {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

        try {
            // Step 1: Navigate to example.com
            driver.get("https://example.com");

            // Step 2: Click link/button that opens new tab
            // Assuming the link has id 'newTabLink'
            wait.until(ExpectedConditions.elementToBeClickable(By.id("newTabLink"))).click();

            // Step 3: Switch to new tab
            List<String> tabs = new ArrayList<>(driver.getWindowHandles());
            // The new tab should be the last in the list
            driver.switchTo().window(tabs.get(1));

            // Step 4: Verify URL of new tab
            wait.until(ExpectedConditions.urlToBe("https://example.com/newpage"));
            assert driver.getCurrentUrl().equals("https://example.com/newpage") : "New tab URL mismatch";

            // Step 5: Switch back to original tab
            driver.switchTo().window(tabs.get(0));

            // Step 6: Verify URL of original tab
            wait.until(ExpectedConditions.urlToBe("https://example.com"));
            assert driver.getCurrentUrl().equals("https://example.com") : "Original tab URL mismatch";

        } finally {
            // Close all tabs and quit
            driver.quit();
        }
    }
}

This code uses Selenium WebDriver with Java to automate the test case.

We start by setting up the ChromeDriver and opening the browser to 'https://example.com'.

We wait until the element with id 'newTabLink' is clickable and click it to open a new tab.

We then get all window handles and switch to the new tab, which is the second window handle.

We wait until the URL of the new tab is 'https://example.com/newpage' and assert it matches.

Next, we switch back to the original tab and verify its URL is still 'https://example.com'.

Finally, we close all browser windows with driver.quit() to clean up.

Explicit waits ensure the page loads before assertions, and using window handles properly switches between tabs.

Common Mistakes - 4 Pitfalls
Using Thread.sleep() instead of explicit waits
Hardcoding window handles instead of retrieving them dynamically
Not switching back to the original tab after working on the new tab
Not closing the browser or tabs after test completion
Bonus Challenge

Now add data-driven testing with 3 different URLs that open in new tabs and verify each.

Show Hint

Practice

(1/5)
1. Which Selenium Java command is used to open a new browser tab?
easy
A. driver.switchTo().newWindow(WindowType.TAB)
B. driver.openNewTab()
C. driver.createTab()
D. driver.newWindow(Tab)

Solution

  1. Step 1: Understand Selenium's new window/tab creation

    Selenium provides a method driver.switchTo().newWindow() to open new tabs or windows.
  2. Step 2: Identify the correct WindowType for a tab

    Using WindowType.TAB opens a new tab, which matches driver.switchTo().newWindow(WindowType.TAB).
  3. Final Answer:

    driver.switchTo().newWindow(WindowType.TAB) -> Option A
  4. Quick Check:

    Open new tab = driver.switchTo().newWindow(WindowType.TAB) [OK]
Hint: Use driver.switchTo().newWindow(WindowType.TAB) for new tabs [OK]
Common Mistakes:
  • Using non-existent methods like driver.openNewTab()
  • Confusing WindowType.WINDOW with TAB
  • Trying to create tabs without switchTo()
2. Which of the following is the correct syntax to open a new browser window in Selenium Java?
easy
A. driver.newWindow(WindowType.WINDOW);
B. driver.switchTo().newWindow(WindowType.WINDOW);
C. driver.switchTo().openWindow(WindowType.WINDOW);
D. driver.openNewWindow(WindowType.WINDOW);

Solution

  1. Step 1: Recall the correct method to open new windows

    The correct method is driver.switchTo().newWindow() with a WindowType argument.
  2. Step 2: Match the exact syntax

    driver.switchTo().newWindow(WindowType.WINDOW); matches the correct syntax exactly with WindowType.WINDOW.
  3. Final Answer:

    driver.switchTo().newWindow(WindowType.WINDOW); -> Option B
  4. Quick Check:

    Open new window = driver.switchTo().newWindow(WindowType.WINDOW) [OK]
Hint: Use switchTo().newWindow(WindowType.WINDOW) to open new windows [OK]
Common Mistakes:
  • Omitting switchTo() before newWindow()
  • Using incorrect method names like openWindow()
  • Missing semicolon in Java syntax
3. What will be the output of the following Selenium Java code snippet?
driver.get("https://example.com");
String originalHandle = driver.getWindowHandle();
driver.switchTo().newWindow(WindowType.TAB);
driver.get("https://selenium.dev");
System.out.println(driver.getCurrentUrl());
driver.switchTo().window(originalHandle);
System.out.println(driver.getCurrentUrl());
medium
A. https://selenium.dev https://selenium.dev
B. https://example.com https://selenium.dev
C. https://selenium.dev https://example.com
D. https://example.com https://example.com

Solution

  1. Step 1: Understand window handles and tab switching

    The code opens example.com, saves the original window handle, then opens a new tab and navigates to selenium.dev.
  2. Step 2: Analyze the printed URLs

    First print shows the URL of the new tab (selenium.dev). Then it switches back to the original window and prints its URL (example.com).
  3. Final Answer:

    https://selenium.dev https://example.com -> Option C
  4. Quick Check:

    Switch tabs = different URLs printed [OK]
Hint: Switching tabs changes current URL output [OK]
Common Mistakes:
  • Assuming URLs remain the same after switching tabs
  • Not saving original window handle before opening new tab
  • Confusing getWindowHandle() with getWindowHandles()
4. Identify the error in the following Selenium Java code snippet that tries to open a new tab:
driver.get("https://example.com");
driver.newWindow(WindowType.TAB);
driver.get("https://selenium.dev");
medium
A. No error, code is correct
B. WindowType.TAB is invalid
C. driver.get() cannot be used after newWindow()
D. Missing driver.switchTo() before newWindow()

Solution

  1. Step 1: Check method usage for opening new tabs

    The method newWindow() must be called after driver.switchTo().
  2. Step 2: Identify the missing part in the code

    The code calls driver.newWindow() directly, which is incorrect syntax.
  3. Final Answer:

    Missing driver.switchTo() before newWindow() -> Option D
  4. Quick Check:

    Always use switchTo().newWindow() [OK]
Hint: Always use driver.switchTo() before newWindow() [OK]
Common Mistakes:
  • Calling newWindow() directly on driver
  • Confusing WindowType.TAB as invalid
  • Thinking driver.get() is restricted after newWindow()
5. You want to open a new tab, navigate to a URL, then switch back to the original tab and verify its title. Which code snippet correctly does this in Selenium Java?
hard
A. String original = driver.getWindowHandle(); driver.switchTo().newWindow(WindowType.TAB); driver.get("https://selenium.dev"); driver.switchTo().window(original); assert driver.getTitle().contains("Example");
B. driver.switchTo().newWindow(WindowType.TAB); driver.get("https://selenium.dev"); String original = driver.getWindowHandle(); driver.switchTo().window(original); assert driver.getTitle().contains("Example");
C. String original = driver.getWindowHandle(); driver.newWindow(WindowType.TAB); driver.get("https://selenium.dev"); driver.switchTo().window(original); assert driver.getTitle().contains("Example");
D. driver.get("https://selenium.dev"); driver.switchTo().newWindow(WindowType.TAB); driver.switchTo().window(original); assert driver.getTitle().contains("Example");

Solution

  1. Step 1: Save original window handle before opening new tab

    We must save the original window handle before opening a new tab to switch back later.
  2. Step 2: Open new tab, navigate, then switch back and assert title

    String original = driver.getWindowHandle(); driver.switchTo().newWindow(WindowType.TAB); driver.get("https://selenium.dev"); driver.switchTo().window(original); assert driver.getTitle().contains("Example"); correctly calls switchTo().newWindow(WindowType.TAB), navigates, switches back using saved handle, and asserts title.
  3. Final Answer:

    Option A code snippet correctly performs all steps -> Option A
  4. Quick Check:

    Save handle, open tab, switch back, assert [OK]
Hint: Save handle before new tab, switch back to assert [OK]
Common Mistakes:
  • Saving window handle after opening new tab
  • Calling newWindow() without switchTo()
  • Not switching back before assertion
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