I want to close all open tabs (browser windows) without actually closing the driver, because I want to keep using it.
driver.close() will just close the focused tab.
driver.quit() will close them all but also quit the driver.
I thought about using driver.quit() and then re-opening the driver. But it does not seem very clean. Or maybe it is super clean, but also a slow thing to do.
Note: Using Firefox via geckodriver
How can I approach this?
解决方案
You can close the tabs by sending ctrl + w to the page until you don't have any tabs left. Keep a record of how many tabs you opened and use a loop to close them
from selenium.webdriver.common.keys import Keys
num_of_tabs = ...
for x in range(1, num_of_tabs):
self.driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 'W')
This will close all the tabs but one. Closing the last one will not close the driver, but you won't be able to use it.