Bird
Raised Fist0
Selenium Pythontesting~15 mins

Why multi-window scenarios need switching in Selenium Python - Automation Benefits in Action

Choose your learning style10 modes available
Verify multi-window handling by switching between windows
Preconditions (2)
Step 1: Open the main web page with a link that opens a new window
Step 2: Click the link that opens a new window
Step 3: Switch to the new window
Step 4: Verify the new window's title or URL
Step 5: Switch back to the original window
Step 6: Verify the original window's title or URL
✅ Expected Result: The test should successfully switch between windows and verify their titles or URLs correctly.
Automation Requirements - Selenium with Python
Assertions Needed:
Verify the new window's title or URL after switching
Verify the original window's title or URL after switching back
Best Practices:
Use explicit waits to ensure windows are loaded before switching
Use window handles to switch windows instead of hardcoded indices
Clean up by closing extra windows if needed
Automated Solution
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Initialize WebDriver
with webdriver.Chrome() as driver:
    driver.get('https://example.com/multi-window')  # Replace with actual URL

    original_window = driver.current_window_handle

    # Click link that opens new window
    link = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'open-new-window'))
    )
    link.click()

    # Wait for new window
    WebDriverWait(driver, 10).until(EC.new_window_is_opened)

    # Get all window handles
    windows = driver.window_handles

    # Switch to new window
    for window in windows:
        if window != original_window:
            driver.switch_to.window(window)
            break

    # Verify new window title or URL
    WebDriverWait(driver, 10).until(EC.title_contains('New Window'))
    assert 'new-window' in driver.current_url, f"Expected 'new-window' in URL but got {driver.current_url}"

    # Switch back to original window
    driver.switch_to.window(original_window)

    # Verify original window title or URL
    WebDriverWait(driver, 10).until(EC.title_contains('Main Page'))
    assert 'multi-window' in driver.current_url, f"Expected 'multi-window' in URL but got {driver.current_url}"

This script opens a web page that has a link opening a new window. It stores the original window handle first. Then it clicks the link and waits until a new window opens.

It collects all window handles and switches to the one that is not the original. Then it waits for the new window's title to contain expected text and asserts the URL contains expected substring.

After verification, it switches back to the original window and verifies its title and URL similarly.

Explicit waits ensure the windows are fully loaded before assertions. Using window handles avoids hardcoding window indices, making the test reliable.

Common Mistakes - 3 Pitfalls
Not switching to the new window before interacting
Hardcoding window indices like driver.window_handles[1]
Not waiting for the new window to open before switching
Bonus Challenge

Now add data-driven testing with 3 different links that open different new windows

Show Hint

Practice

(1/5)
1. Why do we need to switch windows in Selenium when dealing with multiple tabs or pop-ups?
easy
A. Because Selenium can only interact with one window at a time
B. Because switching windows speeds up the test execution
C. Because switching windows closes the other tabs automatically
D. Because switching windows changes the browser theme

Solution

  1. Step 1: Understand Selenium's window focus

    Selenium controls one browser window or tab at a time. It cannot interact with elements in other windows unless switched.
  2. Step 2: Reason why switching is necessary

    To interact with a new tab or pop-up, Selenium must switch its focus to that window. Without switching, commands target the original window only.
  3. Final Answer:

    Because Selenium can only interact with one window at a time -> Option A
  4. Quick Check:

    Window focus = single active window [OK]
Hint: Remember: Selenium controls one window at a time [OK]
Common Mistakes:
  • Thinking switching changes browser appearance
  • Assuming switching closes other tabs
  • Believing switching speeds up tests
2. Which of the following is the correct syntax to switch to a new window in Selenium Python?
easy
A. driver.switch_to.window(driver.window_handles[1])
B. driver.switch.window(driver.window_handles[1])
C. driver.switchTo().window(driver.window_handles[1])
D. driver.switch_window(driver.window_handles[1])

Solution

  1. Step 1: Recall Selenium Python syntax for window switching

    The correct method is driver.switch_to.window(window_handle) where window_handle is a string from driver.window_handles.
  2. Step 2: Identify the correct option

    driver.switch_to.window(driver.window_handles[1]) uses the correct method and attribute names. Other options use incorrect method names or Java syntax.
  3. Final Answer:

    driver.switch_to.window(driver.window_handles[1]) -> Option A
  4. Quick Check:

    Correct method = switch_to.window [OK]
Hint: Use driver.switch_to.window(handle) in Python [OK]
Common Mistakes:
  • Using Java syntax like switchTo() in Python
  • Missing '_to' in switch_to
  • Using non-existent methods like switch_window
3. Given the following code snippet, what will be printed?
driver.get('https://example.com')
main_window = driver.current_window_handle
# Assume a new tab opens here
all_windows = driver.window_handles
print(len(all_windows))
driver.switch_to.window(all_windows[1])
print(driver.current_window_handle == main_window)
medium
A. 1\nTrue
B. 2\nFalse
C. 2\nTrue
D. Error at switch_to.window line

Solution

  1. Step 1: Understand window handles after new tab opens

    After opening a new tab, driver.window_handles contains two handles, so len(all_windows) is 2.
  2. Step 2: Check current window handle after switching

    Switching to all_windows[1] changes focus to the new tab, so driver.current_window_handle == main_window is False.
  3. Final Answer:

    2 False -> Option B
  4. Quick Check:

    Two windows open, switched focus ≠ main [OK]
Hint: Switching changes current window handle [OK]
Common Mistakes:
  • Assuming window_handles length is 1
  • Expecting current window handle to stay same after switch
  • Thinking switch_to.window causes error here
4. What is wrong with this Selenium Python code snippet for switching to a new window?
new_window = driver.window_handles[1]
driver.switch_to.window(new_window)
Assuming only one window is open.
medium
A. driver.window_handles returns a string, not a list
B. SyntaxError in switch_to.window method
C. IndexError because window_handles has only one element
D. No error, code works fine

Solution

  1. Step 1: Check window_handles length

    If only one window is open, driver.window_handles has length 1, so index 1 is out of range.
  2. Step 2: Identify error type

    Accessing index 1 causes an IndexError in Python because the list has only index 0.
  3. Final Answer:

    IndexError because window_handles has only one element -> Option C
  4. Quick Check:

    Index out of range = IndexError [OK]
Hint: Check window_handles length before indexing [OK]
Common Mistakes:
  • Assuming multiple windows always open
  • Confusing IndexError with SyntaxError
  • Thinking window_handles is a string
5. You have a test that opens a main page, then clicks a link opening a new tab. You want to fill a form in the new tab and then return to the main page. Which sequence of actions is correct?
hard
A. Ignore window handles and interact with both tabs simultaneously
B. Interact with new tab without switching, then close main window
C. Switch to new window, then close it without switching back
D. Store main window handle, switch to new window, interact, then switch back to main window

Solution

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

    Store main_window = driver.current_window_handle to return later.
  2. Step 2: Switch to new window and interact

    Use driver.switch_to.window(new_window_handle) to fill the form in the new tab.
  3. Step 3: Switch back to main window after interaction

    Use driver.switch_to.window(main_window) to continue tests on the main page.
  4. Final Answer:

    Store main window handle, switch to new window, interact, then switch back to main window -> Option D
  5. Quick Check:

    Switch focus to interact, then return [OK]
Hint: Always switch windows to interact, then switch back [OK]
Common Mistakes:
  • Trying to interact without switching windows
  • Closing windows without switching back
  • Ignoring window handles and expecting simultaneous control
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