我在使用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值就可以了。

在这里插入图片描述
(码代码累了,一起来欣赏一下美图吧~)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐