Closing browser (close vs quit) in Selenium Python - Automation Approaches Compared
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchWindowException import time # Setup WebDriver (adjust path to chromedriver as needed) service = Service() driver = webdriver.Chrome(service=service) try: # Step 1 & 2: Open browser and navigate driver.get('https://example.com') original_window = driver.current_window_handle # Step 3: Open new window using JavaScript driver.execute_script('window.open("https://example.com", "_blank");') time.sleep(1) # Wait for new window to open # Step 4: Switch to new window windows = driver.window_handles assert len(windows) == 2, f'Expected 2 windows, found {len(windows)}' new_window = [w for w in windows if w != original_window][0] driver.switch_to.window(new_window) # Step 5: Close current window driver.close() # Step 6: Verify one window remains remaining_windows = driver.window_handles assert len(remaining_windows) == 1, f'Expected 1 window after close(), found {len(remaining_windows)}' # Step 7: Switch back to original window driver.switch_to.window(original_window) # Step 8: Quit driver driver.quit() # Step 9: Verify browser closed by checking exception on window_handles try: _ = driver.window_handles raise AssertionError('driver.window_handles should fail after quit()') except Exception: pass # Expected exception except Exception as e: driver.quit() raise e
This script opens a browser and navigates to example.com. It then opens a new browser tab using JavaScript and switches to it. After switching, it calls driver.close() to close only the current tab. We verify that one window remains open by checking driver.window_handles. Then, we switch back to the original window and call driver.quit() to close all browser windows and end the session. Finally, we verify that the browser is closed by attempting to access driver.window_handles, which should raise an exception.
Explicit waits are replaced by time.sleep(1) here for simplicity, but in real tests, use Selenium explicit waits. The try-except block ensures the driver quits even if an error occurs, preventing orphan browser processes.
Now add data-driven testing to open different URLs in new tabs and verify closing behavior for each.
Practice
close() method do in Selenium WebDriver?Solution
Step 1: Understand the purpose of
Theclose()close()method is designed to close only the current browser window or tab that the WebDriver is controlling.Step 2: Compare with
Unlikequit()quit(), which closes all windows and ends the session,close()affects only one window or tab.Final Answer:
Closes the current browser window or tab only -> Option DQuick Check:
close()closes one window [OK]
- Confusing close() with quit()
- Thinking close() ends the WebDriver session
- Assuming close() clears cookies
Solution
Step 1: Identify the method to end WebDriver session
The methodquit()is used to close all browser windows and end the WebDriver session properly.Step 2: Verify syntax correctness
driver.quit()is the correct syntax; other options likeexit()orstop()do not exist in Selenium WebDriver API.Final Answer:
driver.quit() -> Option AQuick Check:
Usequit()to close all windows [OK]
- Using driver.close() to end session
- Using non-existent methods like exit() or stop()
- Missing parentheses in method call
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com')
driver.close()
print(driver.title)What will happen when this code runs?
Solution
Step 1: Analyze the effect of
Thedriver.close()close()method closes the current browser window, so after this call, the window is no longer available.Step 2: Accessing
Trying to get the title after closing the window causes a WebDriverException because the session still exists but the window is closed.driver.titleafter closing windowFinal Answer:
Raises an error because the browser window is closed before accessing title -> Option BQuick Check:
Accessing title after close() causes error [OK]
- Assuming title prints after close()
- Thinking close() ends session (it doesn't)
- Ignoring exceptions after window close
driver = webdriver.Firefox()
driver.get('https://example.com')
driver.close()
driver.quit()What is the problem with this code?
Solution
Step 1: Understand the effect of close() and quit()
close()closes the current window;quit()closes all windows and ends the session.Step 2: Analyze calling close() before quit()
Callingclose()first closes one window, thenquit()closes any remaining windows and ends the session. This is redundant but does not cause errors.Final Answer:
Calling close() before quit() is redundant but safe -> Option AQuick Check:
close() then quit() is safe but redundant [OK]
- Thinking quit() after close() causes error
- Believing close() replaces quit()
- Expecting multiple windows opened
Solution
Step 1: Understand the requirement to close only one tab
To close only the second tab and keep the first open, you must close the current window or tab without ending the session.Step 2: Choose the correct method
close()closes the current window or tab only, whilequit()closes all windows and ends the session. Methodsstop()andexit()do not exist in Selenium.Final Answer:
driver.close() -> Option CQuick Check:
Use close() to close one tab, quit() closes all [OK]
- Using quit() which closes all tabs
- Using non-existent methods like stop() or exit()
- Confusing close() with quit()
Ready to prove it?
Pass the test and this pattern moves unknown
