首页 > 解决方案 > 在 selenium 中关闭选项卡正在使 current_window_handle = NoneType,即使有另一个选项卡打开

问题描述

正如标题所说,我遇到了一个问题,我打开了两个选项卡,试图关闭除其中一个之外的所有选项卡,一旦我关闭一个选项卡,该current_window_handle值就会被删除。但是,我确实注意到列表中仍然有我的窗口句柄window_handles。想知道其他人是否也遇到过这个问题。

有问题的代码:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://example.com')
browser.execute_script("window.open('');")
window_id = browser.window_handles[-1]
browser.switch_to.window(window_id)
browser.close()
browser.get('https://google.ca')
selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
selenium==3.141.0
chrome=93.0.4577.63
ChromeDriver=93.0.4577.63

标签: pythonseleniumselenium-chromedriver

解决方案


修复了问题。只需添加

window_id = browser.window_handles[0]
browser.switch_to.window(window_id)

重置current_window_handle属性。

所以现在的代码是

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://example.com')
browser.execute_script("window.open('');")
window_id = browser.window_handles[-1]
browser.switch_to.window(window_id)
browser.close()
window_id = browser.window_handles[0]
browser.switch_to.window(window_id)
browser.get('https://google.ca')

推荐阅读