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

能否在单个脚本中用同一driver对象调用driver.get()访问不同URL?

Selenium复用Driver时浏览器异常关闭的问题分析与解决

可能的原因

  • 原页面存在自动关闭逻辑:你爬取的主页面可能包含前端脚本,比如定时器触发window.close(),或者反爬机制检测到自动化工具后主动终止浏览器会话,导致原Driver实例失效。
  • Driver会话意外终止:在爬取子分类链接的过程中,原页面可能发生了意外跳转、刷新,或者元素查找时出现未捕获的异常,导致Driver会话被静默终止,后续调用get()自然无响应。
  • 版本不兼容:Chrome浏览器与ChromeDriver版本不匹配,会导致会话稳定性下降,复用Driver时容易触发崩溃。

解决方案

  1. 排查原页面的自动关闭行为:手动打开主页面,观察是否会自动关闭;或者打开浏览器开发者工具(F12)查看Console面板,检查是否有执行关闭操作的脚本。
  2. 检查Driver会话状态:在调用新链接前,先验证Driver是否还存活:
try:
    # 尝试获取当前页面标题,判断会话是否有效
    print(driver.title)
    driver.get(links[0])
except Exception as e:
    print(f"Driver会话异常:{str(e)}")
  1. 匹配Chrome与ChromeDriver版本:确保两者版本完全一致(比如Chrome是118.x,ChromeDriver也要对应118.x版本),避免版本不兼容导致的崩溃。
  2. 优化Driver复用方式:爬取完主页面链接后,先清除Cookie或导航到空白页,再跳转新链接:
# 清除原页面Cookie
driver.delete_all_cookies()
# 或者先跳转到空白页
driver.get("about:blank")
# 再访问新链接
driver.get(links[0])

是否必须新建Driver?

完全不需要。复用同一个Driver实例才是更高效的做法——新建多个Driver会占用更多系统资源(每个Driver对应一个独立的浏览器进程),还更容易被网站反爬机制识别。只有当原Driver会话确实无法恢复时,才需要考虑新建实例。

你的可运行代码

main_page = 'https://www.*******.com/gaming'
PATH = 'C:\\Program Files (x86)\\chromedriver.exe'
driver = webdriver.Chrome(PATH)

driver.get(main_page)

sub_categories = driver.find_elements(By.CLASS_NAME, 'list-nav- item.context-nav-link')

links = []

for el in sub_categories:
    links.append(el.get_attribute('href'))

new_driver = webdriver.Chrome(PATH)
new_driver.get(links[0]) #going to 1st link obtained

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:01:13