我在使用selenium 切换窗口的时候,由于不小心关闭了一个窗口,运行的时候就遇到这样的警告:
no such window: target window already closed
具体的问题展示:
这个问题表示:当前的页面被关闭了,selenium 找不到这个网页窗口了!
解决方法:
from selenium import webdriverdriver = webdriver.Chrome()# 获取所有窗口句柄
all_handles = driver.window_handlesif len(all_handles) > 0:# 切换到第一个可用窗口driver.switch_to.window(all_handles[0])print("已切换到窗口:", driver.title)
else:print("无可用窗口,需要重新启动浏览器")
这个适用于网页打开了很多标签页的情况,如果浏览器仍有其他打开的标签页,这个方法可以切换到其他有效窗口。
如果不是的话,那就要重新运行selenium ,让它自己在打开一次窗口了。
当然也可以搞无头浏览器,这样的话就可以防止关闭标签页的问题了(但是会看不到运行的过程)
options = Options()
options.add_argument("--headless=new") # Chrome 112+新版无头模式
driver = webdriver.Chrome(options=options)
或者防止自己“手贱”关闭错标签页,也可以只保留某个标签页,其余的标签页自动关闭:
# 关闭所有其他窗口,保留第一个
main_handle = driver.window_handles[0]
for handle in driver.window_handles:if handle != main_handle:driver.switch_to.window(handle)driver.close()
driver.switch_to.window(main_handle)
上面的是自动关闭其余的,只保留第一个网页;如果想保留其他的网页,就修改index值就可以了。
(码代码累了,一起来欣赏一下美图吧~)