Reputation: 1238
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?
Upvotes: 10
Views: 27135
Reputation: 91
This will only close window, your selenium driver session still runs.
driver.switch_to.window(driver.window_handles[0])
Upvotes: 1
Reputation: 101
curr=driver.current_window_handle
for handle in driver.window_handles:
driver.switch_to.window(handle)
if handle != curr:
driver.close()
Upvotes: 9
Reputation: 21
simply using this to ommit first tab, solution works for me!
try:
firstTime = True
for handle in browser.window_handles:
browser.switch_to.window(handle)
if(not firstTime):
browser.close()
firstTime = False
except:
return
Upvotes: 0
Reputation: 323
Window handles can be used for that as well. Loop through all opened windows and close them:
for handle in driver.window_handles:
driver.switch_to.window(handle)
driver.close()
This should close all browser windows.
Upvotes: 10
Reputation: 50949
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.
Upvotes: 4