我想关闭所有打开的标签(浏览器窗口)而不实际关闭驱动程序,因为我想继续使用它。
driver.close()
只会关闭焦点标签driver.quit()
会关闭它们,但也会退出驱动程序。
我考虑过使用 driver.quit()
,然后重新打开驱动程序。但它似乎不是很干净。或者它可能非常干净,但也很慢。
注意:通过 geckodriver 使用Firefox
我该如何处理?
答案 0 :(得分:4)
您可以通过向页面发送ctrl + w
来关闭标签,直到您没有任何标签。记录您打开的标签数量并使用循环关闭它们
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')
这将关闭所有标签但只有一个。关闭最后一个不会关闭driver
,但您将无法使用它。
答案 1 :(得分:0)
窗口句柄也可以用于此。循环浏览所有打开的窗口并关闭它们:
for handle in driver.window_handles:
driver.switch_to.window(handle)
driver.close()
这应该关闭所有浏览器窗口。
答案 2 :(得分:0)
只需使用此选项就可以忽略第一个标签,解决方案对我来说很有效!
try:
firstTime = True
for handle in browser.window_handles:
browser.switch_to.window(handle)
if(not firstTime):
browser.close()
firstTime = False
except:
return
答案 3 :(得分:-1)
curr=driver.current_window_handle
for handle in driver.window_handles:
driver.switch_to.window(handle)
if handle != curr:
driver.close()