Bird
Raised Fist0
Selenium Pythontesting~20 mins

Switching between windows in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Window Switching Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Selenium window switch code?

Consider the following Selenium Python code snippet that opens a new window and switches to it. What will be the printed output?

Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# Setup driver
options = webdriver.ChromeOptions()
options.add_argument('--headless=new')
driver = webdriver.Chrome(options=options)

# Open initial page
driver.get('https://example.com')
original_window = driver.current_window_handle

# Open new window
driver.execute_script('window.open("https://example.org", "_blank");')
time.sleep(1)

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

print(driver.title)
driver.quit()
ANoSuchWindowException
BExample Domain - New Window
CExample Domain - Example Org
DExample Domain
Attempts:
2 left
💡 Hint

Remember that driver.title returns the title of the current page after switching windows.

❓ assertion
intermediate
1:30remaining
Which assertion correctly verifies the switch to a new window?

You have switched to a new browser window using Selenium. Which assertion correctly checks that the current window handle is not the original one?

Selenium Python
original_window = driver.current_window_handle
# code to open and switch to new window

# Which assertion below is correct?
Aassert driver.current_window_handle != original_window
Bassert driver.current_window_handle == original_window
Cassert driver.window_handles == original_window
Dassert driver.current_window_handle in original_window
Attempts:
2 left
💡 Hint

The current window handle should be different from the original after switching.

❓ locator
advanced
1:30remaining
Which locator strategy is best to find the button that opens a new window?

On a webpage, a button opens a new window when clicked. The button has the text "Open New Window" and a unique id "open-window-btn". Which locator is best to find this button in Selenium?

Adriver.find_element(By.CSS_SELECTOR, 'button#open-window-btn')
Bdriver.find_element(By.XPATH, "//button[text()='Open New Window']")
Cdriver.find_element(By.ID, 'open-window-btn')
Ddriver.find_element(By.CLASS_NAME, 'open-window-btn')
Attempts:
2 left
💡 Hint

Using unique IDs is the fastest and most reliable locator.

🔧 Debug
advanced
2:00remaining
Why does this Selenium code raise NoSuchWindowException?

Review the code below. It tries to switch to a new window but raises NoSuchWindowException. What is the likely cause?

Selenium Python
original_window = driver.current_window_handle
# Open new window
driver.execute_script('window.open("https://example.org", "_blank");')

# Incorrect switch
handle = driver.window_handles[1]
driver.switch_to.window(handle)

# Then close original window
driver.switch_to.window(original_window)
driver.close()
AThe original window was closed before switching back to it
BThe driver.execute_script syntax is invalid
CThe new window handle index is wrong
DThe driver.switch_to.window method is deprecated
Attempts:
2 left
💡 Hint

Check the order of window closing and switching.

❓ framework
expert
3:00remaining
How to implement a robust window switch helper in Selenium Python?

You want to create a helper function that waits for a new window to open and switches to it safely. Which implementation below correctly waits up to 10 seconds for a new window and switches to it?

Selenium Python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def switch_to_new_window(driver, timeout=10):
    original_windows = driver.window_handles
    WebDriverWait(driver, timeout).until(
        lambda d: len(d.window_handles) > len(original_windows)
    )
    new_windows = set(driver.window_handles) - set(original_windows)
    driver.switch_to.window(new_windows.pop())
AThe code uses deprecated Selenium methods
BThe code waits for a new window and switches to it correctly
CThe code switches before waiting for the new window
DThe code waits but does not switch to the new window
Attempts:
2 left
💡 Hint

Check the order of waiting and switching in the function.

Practice

(1/5)
1. What does driver.switch_to.window(window_handle) do in Selenium?
easy
A. It closes the current browser window.
B. It changes control to the browser window identified by window_handle.
C. It refreshes the current browser window.
D. It opens a new browser window.

Solution

  1. Step 1: Understand the method purpose

    driver.switch_to.window() is used to change Selenium's focus to a different browser window or tab.
  2. Step 2: Identify the parameter role

    The parameter window_handle specifies which window Selenium should control next.
  3. Final Answer:

    It changes control to the browser window identified by window_handle. -> Option B
  4. Quick Check:

    Switching windows = change control [OK]
Hint: Switch windows by passing the window handle to switch_to.window() [OK]
Common Mistakes:
  • Thinking it closes or refreshes windows
  • Confusing switching with opening new windows
  • Not passing a valid window handle
2. Which of the following is the correct syntax to switch to a new window stored in variable new_window?
easy
A. driver.window_switch(new_window)
B. driver.switch_window(new_window)
C. driver.switchTo().window(new_window)
D. driver.switch_to.window(new_window)

Solution

  1. Step 1: Recall correct Selenium Python syntax

    The correct method to switch windows is driver.switch_to.window() in Python Selenium.
  2. Step 2: Match the syntax with the options

    driver.switch_to.window(new_window) uses the correct method and parameter. Other options use incorrect method names or Java syntax.
  3. Final Answer:

    driver.switch_to.window(new_window) -> Option D
  4. Quick Check:

    Python Selenium uses switch_to.window() [OK]
Hint: Use driver.switch_to.window(handle) exactly in Python [OK]
Common Mistakes:
  • Using Java syntax like switchTo()
  • Using incorrect method names
  • Missing the switch_to part
3. What will be the output of the following code snippet?
original = driver.current_window_handle
all_windows = driver.window_handles
for w in all_windows:
    if w != original:
        driver.switch_to.window(w)
        print(driver.title)
        break
print(driver.current_window_handle == original)
medium
A. Prints the title of the new window and then prints False
B. Prints the title of the original window and then prints True
C. Throws an error because of wrong window handle usage
D. Prints False twice

Solution

  1. Step 1: Understand window handles and switching

    The code saves the original window handle, loops through all windows, and switches to the first window that is not original.
  2. Step 2: Analyze the print statements

    Inside the loop, it prints the title of the new window and breaks. After the loop, it compares current window handle with original, which will be False because we switched.
  3. Final Answer:

    Prints the title of the new window and then prints False -> Option A
  4. Quick Check:

    Switched window title + current handle != original = False [OK]
Hint: Switch changes current handle, so comparison with original is False [OK]
Common Mistakes:
  • Assuming current window handle is still original after switch
  • Confusing window_handles list with current_window_handle
  • Expecting True after switching
4. Identify the error in this code snippet that tries to switch back to the original window:
original = driver.current_window_handle
# code opens new window
new_window = driver.window_handles[1]
driver.switch_to.window(new_window)
# some actions
# switch back
switch_to.window(original)
medium
A. Cannot switch back once switched
B. Using wrong index for new_window
C. Missing 'driver.' before switch_to.window in last line
D. No error, code is correct

Solution

  1. Step 1: Check the last line syntax

    The last line calls switch_to.window(original) without the driver. prefix, which causes a NameError.
  2. Step 2: Confirm other parts are correct

    Index 1 is valid if two windows exist, switching back is allowed, so no other errors.
  3. Final Answer:

    Missing 'driver.' before switch_to.window in last line -> Option C
  4. Quick Check:

    Always prefix with driver.switch_to.window() [OK]
Hint: Always use driver.switch_to.window() fully [OK]
Common Mistakes:
  • Forgetting 'driver.' before switch_to
  • Assuming switch back is automatic
  • Using wrong window handle index without checking
5. You have opened multiple tabs during a test. How do you switch back to the original tab after performing actions on others?
hard
A. Store the original window handle before switching, then use driver.switch_to.window(original_handle) to return.
B. Call driver.close() on all other tabs to return automatically.
C. Use driver.switch_to.default_window() to go back to the first tab.
D. Restart the browser to return to the original tab.

Solution

  1. Step 1: Save the original window handle

    Before switching tabs, save the current window handle in a variable.
  2. Step 2: Switch back using saved handle

    Use driver.switch_to.window(original_handle) to return control to the original tab.
  3. Step 3: Evaluate other options

    Closing tabs or restarting browser is inefficient; default_window() does not exist in Selenium Python.
  4. Final Answer:

    Store the original window handle before switching, then use driver.switch_to.window(original_handle) to return. -> Option A
  5. Quick Check:

    Save handle, then switch back using it [OK]
Hint: Always save original handle to switch back later [OK]
Common Mistakes:
  • Trying to use non-existent default_window() method
  • Closing tabs instead of switching
  • Restarting browser unnecessarily
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