Bird
Raised Fist0
Selenium Pythontesting~10 mins

New window and tab creation in Selenium Python - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test opens a new browser tab and a new browser window, then verifies that the number of open windows/tabs matches the expected count.

Test Code - Selenium
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
import unittest

class TestNewWindowTab(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com')

    def test_new_tab_and_window(self):
        driver = self.driver
        original_windows = driver.window_handles
        original_count = len(original_windows)

        # Open new tab
        driver.execute_script('window.open("https://example.com", "_blank");')
        WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) == original_count + 1)

        # Open new window
        driver.execute_script('window.open("https://example.com", "_blank", "width=600,height=400");')
        WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) == original_count + 2)

        # Verify total windows/tabs count
        self.assertEqual(len(driver.window_handles), original_count + 2)

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()
Execution Trace - 6 Steps
StepActionSystem StateAssertionResult
1Test starts and Chrome browser opensBrowser opened at https://example.com with one tab—PASS
2Get current window handles and countOne window/tab handle presentCount of window handles is 1PASS
3Execute JavaScript to open a new tab with URL https://example.comTwo tabs open in the same browser windowWait until window handles count is original + 1 (2)PASS
4Execute JavaScript to open a new window with URL https://example.com and size 600x400Two tabs plus one new window open (total 3 windows/tabs)Wait until window handles count is original + 2 (3)PASS
5Assert that total window handles count equals original count + 2Three window handles presentlen(driver.window_handles) == original_count + 2PASS
6Test ends and browser closesBrowser closed, all windows/tabs closed—PASS
Failure Scenario
Failing Condition: New tab or new window did not open, so window handles count did not increase as expected
Execution Trace Quiz - 3 Questions
Test your understanding
What does the test verify after opening a new tab and a new window?
AThe URL of the original tab changed
BThe total number of open windows/tabs increased by two
CThe browser title changed
DThe new tab opened in a separate browser instance
Key Result
Always verify the number of open windows or tabs after opening new ones to ensure your test environment matches expectations.

Practice

(1/5)
1. Which Selenium Python command opens a new browser tab?
easy
A. driver.switch_to.new_window('tab')
B. driver.open_new_tab()
C. driver.create_tab()
D. driver.new_tab()

Solution

  1. Step 1: Understand Selenium's new window method

    Selenium provides driver.switch_to.new_window() to open new tabs or windows by specifying the type as 'tab' or 'window'.
  2. Step 2: Identify the correct argument for a new tab

    To open a new tab, the argument must be the string 'tab'. So the correct command is driver.switch_to.new_window('tab').
  3. Final Answer:

    driver.switch_to.new_window('tab') -> Option A
  4. Quick Check:

    Open new tab = driver.switch_to.new_window('tab') [OK]
Hint: Use 'tab' string inside new_window() to open a new tab [OK]
Common Mistakes:
  • Using non-existent methods like driver.open_new_tab()
  • Passing 'window' instead of 'tab' to open a tab
  • Trying driver.new_tab() which is invalid
2. Which of the following is the correct syntax to open a new browser window in Selenium Python?
easy
A. driver.switch_to.new_window('tab')
B. driver.switch_to.new_window('window')
C. driver.new_window('window')
D. driver.open_window('window')

Solution

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

    Selenium's correct method is driver.switch_to.new_window() with argument 'window' to open a new window.
  2. Step 2: Check syntax correctness

    Only driver.switch_to.new_window('window') uses the correct method and argument. driver.new_window('window') and driver.open_window('window') use invalid method names, and driver.switch_to.new_window('tab') opens a tab, not a window.
  3. Final Answer:

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

    Open new window = driver.switch_to.new_window('window') [OK]
Hint: Use 'window' string inside new_window() to open a new window [OK]
Common Mistakes:
  • Confusing 'tab' and 'window' arguments
  • Using wrong method names like driver.new_window()
  • Missing the switch_to part in the command
3. What will be the output of the following Selenium Python code snippet?
driver.get('https://example.com')
original_handle = driver.current_window_handle
driver.switch_to.new_window('tab')
driver.get('https://selenium.dev')
print(len(driver.window_handles))
medium
A. 2
B. 1
C. 0
D. Error

Solution

  1. Step 1: Analyze window handles before and after new tab

    Initially, the driver opens one window (example.com). After driver.switch_to.new_window('tab'), a new tab opens, so total windows/tabs become 2.
  2. Step 2: Count window handles

    The driver.window_handles list contains all open windows/tabs. After opening the new tab, its length is 2.
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    New tab adds one handle, total handles = 2 [OK]
Hint: Count window_handles after new_window() to get total tabs/windows [OK]
Common Mistakes:
  • Assuming window_handles length stays 1 after new tab
  • Confusing current_window_handle with window_handles list
  • Expecting an error due to missing switch focus
4. Identify the error in this Selenium Python code that tries to open a new tab:
driver.get('https://example.com')
driver.new_window('tab')
driver.get('https://selenium.dev')
medium
A. driver.new_window() is not a valid method
B. Cannot open new tab after driver.get()
C. Missing driver.switch_to before new_window()
D. driver.get() cannot be called twice

Solution

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

    The correct method to open a new tab is driver.switch_to.new_window('tab'). The code misses switch_to.
  2. Step 2: Understand why missing switch_to causes error

    Calling driver.new_window('tab') directly is invalid and will raise an AttributeError.
  3. Final Answer:

    Missing driver.switch_to before new_window() -> Option C
  4. Quick Check:

    Use driver.switch_to.new_window() to open tabs/windows [OK]
Hint: Always use driver.switch_to.new_window() to open tabs/windows [OK]
Common Mistakes:
  • Calling new_window() directly on driver
  • Thinking driver.get() limits opening new tabs
  • Believing driver.get() can only be called once
5. You want to open a new tab, switch to it, load a URL, then switch back to the original tab. Which code snippet correctly does this in Selenium Python?
hard
A. original = driver.current_window_handle driver.switch_to.new_window('tab') driver.switch_to.window(original) driver.get('https://selenium.dev')
B. driver.new_window('tab') driver.get('https://selenium.dev') driver.switch_to.window(original)
C. original = driver.current_window_handle driver.switch_to.new_window('window') driver.get('https://selenium.dev') driver.switch_to.window(original)
D. original = driver.current_window_handle driver.switch_to.new_window('tab') driver.get('https://selenium.dev') driver.switch_to.window(original)

Solution

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

    Store driver.current_window_handle in a variable to switch back later.
  2. Step 2: Open new tab and load URL

    Use driver.switch_to.new_window('tab') to open a new tab, then load the URL with driver.get().
  3. Step 3: Switch back to original tab

    Use driver.switch_to.window(original) to return focus to the original tab.
  4. Final Answer:

    Code snippet D correctly opens a new tab, loads URL, and switches back -> Option D
  5. Quick Check:

    Save handle, open tab, load URL, switch back [OK]
Hint: Save handle, open tab, load URL, then switch back [OK]
Common Mistakes:
  • Not saving original window handle before opening new tab
  • Using 'window' instead of 'tab' when a tab is needed
  • Switching back to original tab before loading the URL in the new tab
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