【selenium】遇到no such window: target window already closed的解决方法
·
我在使用selenium 切换窗口的时候,由于不小心关闭了一个窗口,运行的时候就遇到这样的警告:
no such window: target window already closed
具体的问题展示:

这个问题表示:当前的页面被关闭了,selenium 找不到这个网页窗口了!
解决方法:
from selenium import webdriver
driver = webdriver.Chrome()
# 获取所有窗口句柄
all_handles = driver.window_handles
if 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值就可以了。

(码代码累了,一起来欣赏一下美图吧~)
更多推荐
所有评论(0)