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
相关产品推荐
相关产品推荐

