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

Python Selenium WebDriver路径错误无报错却无限卡顿,如何触发异常?

解决Selenium驱动路径/选项错误时卡顿不抛异常的问题

你的代码里有几个关键问题导致了卡顿且不抛异常的情况,逐个拆解:

1. 选项配置函数未返回配置对象

setting_chrome_options函数里创建了chrome_options,但没有用return chrome_options返回,导致传给webdriver的options参数是None,这会干扰Selenium的初始化流程,引发无响应。

2. Chrome选项方法拼写错误

chrome_options.add_addargument("--headless")是拼写错误,正确的方法名是add_argument,错误的方法名会导致选项不生效,进一步加剧初始化异常。

3. 异常捕获范围过窄且日志未配置

你只捕获了ValueError,但驱动路径错误或选项无效时,Selenium抛出的通常是WebDriverException及其子类,而且默认logging没有配置输出级别,就算捕获到异常也看不到日志。

4. 驱动路径错误导致的无响应

当指定的ChromeDriver路径不存在时,Selenium会尝试启动进程但无法成功,部分环境下会陷入等待而不主动抛出异常,需要添加超时机制或确保捕获正确的异常类型。


修复后的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import WebDriverException
import logging

# 配置日志,确保能输出错误信息
logging.basicConfig(level=logging.ERROR)

driver_path = "/usr/bin/chromedriver1"

def setting_chrome_options():
    chrome_options = Options()
    # 修正方法名拼写错误
    chrome_options.add_argument("--headless")
    # 返回配置对象
    return chrome_options

if __name__ == '__main__':
    try:
        driver = webdriver.Chrome(executable_path=driver_path, options=setting_chrome_options())
    except WebDriverException as e:
        # 捕获Selenium相关的所有异常
        logging.error(f"驱动路径或选项错误: {str(e)}")

额外优化建议

  • 针对Selenium 4+版本,推荐用Service类设置超时,避免无限等待:
from selenium.webdriver.chrome.service import Service

service = Service(executable_path=driver_path, service_timeout=10)  # 设置10秒超时
driver = webdriver.Chrome(service=service, options=setting_chrome_options())
  • 务必确保ChromeDriver版本与本地Chrome浏览器版本匹配,版本不兼容也可能导致无响应或异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:22:04