Python和Selenium - 关闭所有选项卡而不关闭浏览器

时间:2017-07-17 10:09:10

标签: python selenium

我想关闭所有打开的标签(浏览器窗口)而不实际关闭驱动程序,因为我想继续使用它。

  

driver.close() 只会关闭焦点标签    driver.quit() 会关闭它们,但也会退出驱动程序。

我考虑过使用 driver.quit() ,然后重新打开驱动程序。但它似乎不是很干净。或者它可能非常干净,但也很慢。

注意:通过 geckodriver 使用Firefox

我该如何处理?

4 个答案:

答案 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()