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

Selenium Python调用Firefox报NotADirectoryError错误求助

这个问题我之前也踩过坑!核心原因是Selenium里Firefox和Chrome的WebDriver初始化逻辑不一样:

  • 对Chrome来说,webdriver.Chrome()的第一个参数直接是chromedriver.exe的路径,所以你之前用Chrome没问题;
  • 但对Firefox来说,旧版webdriver.Firefox()的第一个参数是Firefox浏览器的安装目录,而不是geckodriver.exe的路径——你把geckodriver的exe文件路径传进去,程序会把它当成目录解析,自然就抛出「目录无效」的错误了。

另外还有个小细节:Windows路径里的\是转义字符,直接写可能会导致路径解析异常,建议用原始字符串(在路径前加r)或者把\换成\\。

下面给你两种可行的解决办法,对应不同的Selenium版本:

方案1:新版Selenium(4.x+)推荐写法

新版Selenium已经统一了各浏览器的驱动初始化方式,用Service类来指定驱动路径更规范:

from selenium import webdriver
from selenium.webdriver.firefox.service import Service

# 用原始字符串避免转义问题
service = Service(r"C:\selenium\mozilla\geckodriver.exe")
driver = webdriver.Firefox(service=service)

driver.set_page_load_timeout(30)
driver.maximize_window()
driver.get("https://www.google.com/")
driver.quit()

方案2:兼容旧版Selenium(3.x)的写法

如果你的Selenium还是3.x版本,要把geckodriver路径通过executable_path参数传入,而不是第一个位置参数:

from selenium import webdriver

# 同样注意路径转义
driver = webdriver.Firefox(executable_path=r"C:\selenium\mozilla\geckodriver.exe")

driver.set_page_load_timeout(30)
driver.maximize_window()
driver.get("https://www.google.com/")
driver.quit()

额外提一句:如果把geckodriver.exe放到系统的PATH环境变量里,不用写路径直接webdriver.Firefox()就能启动,这样更省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:24