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

Python下Selenium可正常识别Chromedriver,却无法识别已配置的Geckodriver报路径错误

报错根源定位

你遇到的所有问题本质是Chrome和Firefox的Selenium驱动初始化参数逻辑不一致,你把Chrome的传参习惯直接套用到Firefox上,出现了参数错位:

  • 对Chrome驱动来说,webdriver.Chrome(r'c:\chromedriver\chromedriver.exe')能正常运行,是因为Chrome构造函数的第一个位置参数,从旧版本到Selenium 4+,始终对应接收executable_path(chromedriver可执行文件路径)的入参
  • 对Firefox驱动来说,不管是Selenium 3还是Selenium 4,webdriver.Firefox()的第一个位置参数,对应的都是firefox_profile(Firefox浏览器用户配置目录)的入参,要求传入的是文件夹路径。你把geckodriver.exe的文件路径直接传在第一个位置,Selenium会把这个文件路径当成待解析的配置目录去校验,发现传入路径是个文件、不是目录,自然抛出NotADirectoryError——这个报错和你geckodriver文件是否存在、是否能被pathlib识别完全没有关系。

至于之前把geckodriver加到系统Path后还是提示找不到的问题,通常是两个常见原因:

  • 配置完系统Path后没有完全重启Python运行环境、IDE:环境变量是进程启动时一次性加载的,运行中途修改的系统Path不会被已经启动的Python进程读取到
  • geckodriver版本和本地安装的Firefox浏览器版本不匹配,驱动无法正常被Selenium拉起
可落地的解决步骤
  • 正确指定geckodriver路径的写法(适配全版本Selenium)
    不要把geckodriver路径当位置参数传给webdriver.Firefox(),要通过显式声明的Service类传入驱动路径,正确可运行的代码示例:
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService

# 初始化驱动服务,指定geckodriver的绝对路径
firefox_driver_service = FirefoxService(executable_path=r'c:\geckodriver\geckodriver.exe')
# 初始化浏览器实例时传入配置好的服务
browser = webdriver.Firefox(service=firefox_driver_service)
  • 校验Path配置是否真的生效
    如果不想每次代码里都写驱动绝对路径,配置完系统Path后必须做两步校验:
  1. 完全关闭当前运行的Python解释器、IDE(包括后台残留的进程),重新启动后再运行代码
  2. 打开独立的Windows CMD终端,直接输入geckodriver --version,能正常打印出版本号才代表Path配置生效;如果CMD中提示“不是内部或外部命令”,说明你配置的Path路径不对,或者geckodriver被放在了带中文、空格的特殊路径文件夹里
  • 版本兼容校验
    无论用哪种方式指定驱动路径,都要保证geckodriver大版本和本地安装的Firefox浏览器版本匹配:比如本地安装Firefox 115以上版本,就不能使用2022年之前发布的旧版geckodriver,不然就算路径完全正确也会启动失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 20:18:03