You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium遇无限加载页面超时后如何跳转新页面?

解决Selenium Chrome超时后后续请求无法跳转的问题

我之前也踩过一模一样的坑!这种情况本质是ChromeDriver在处理无限加载页面时,会话状态卡住了,导致后续的driver.get()命令根本无法被浏览器正确响应,自然也就不会跳转新URL。给你几个经过验证的解决思路:

1. 提前配置页面加载策略+超时后强制停止加载

默认情况下Selenium会等待页面所有资源加载完成才会继续执行,碰到无限加载的内容直接就卡死了。我们可以先修改页面加载策略,再配合超时处理:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

# 设置Chrome选项,改用 eager 加载策略(只等待DOM加载完成)
options = webdriver.ChromeOptions()
options.page_load_strategy = 'eager'  # 可选值还有 'none',完全不等待加载

driver = webdriver.Chrome(chrome_options=options)
# 设置页面加载超时时间(比如30秒)
driver.set_page_load_timeout(30)

try:
    driver.get("存在无限加载的问题页面URL")
except TimeoutException:
    # 超时后强制停止页面加载
    driver.execute_script("window.stop();")
    # 或者模拟按ESC键停止加载,某些场景下更有效
    # from selenium.webdriver.common.keys import Keys
    # driver.send_keys(Keys.ESCAPE)

这样即使碰到无限加载的页面,也能及时终止加载,避免会话卡住。

2. 超时后彻底重启Driver实例

如果上面的方法还是没能挽救会话,那最稳妥的方式就是直接重启Driver:

try:
    driver.get("问题页面URL")
except TimeoutException:
    # 彻底退出当前Driver进程,不要用close(),close()只关标签页
    driver.quit()
    # 重新初始化Driver
    driver = webdriver.Chrome(chrome_options=options)
    # 现在再访问新URL就正常了
    driver.get("正常的新URL")

旧的会话已经处于异常状态,强行复用只会继续出问题,重启是最直接的解决方式。

3. 检查版本兼容性(长期优化)

你当前用的Selenium 3.10.0 + ChromeDriver 2.35,对应的Chrome版本大概是62-64,这个组合确实存在一些会话泄漏的已知问题。如果条件允许,尽量把ChromeDriver版本和你本地的Chrome浏览器版本匹配(ChromeDriver版本要对应Chrome的大版本号),同时可以考虑把Selenium升级到3.x的较新版本,能减少这类奇怪的卡死情况。


内容的提问来源于stack exchange,提问作者user2667066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:29:51