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

Selenium Firefox偏好已修改但未生效,PDF自动下载失败求助

解决Selenium Firefox自动化下载失败的问题

我之前也碰到过一模一样的情况,结合你的测试环境(Selenium 3.12.0 + Firefox 59/60 + GeckoDriver 0.19-0.21),这个问题大概率是GeckoDriver早期版本的配置加载时序bug导致的——虽然你在FirefoxOptions里设置了所有偏好,但GeckoDriver初始化浏览器会话时,部分下载相关的配置并没有被正确注入到当前会话中,而手动重新应用后,这些偏好才真正生效。另外,系统目录的权限问题也可能是诱因,下面给你几个针对性的解决方案:

1. 启动浏览器后强制刷新下载偏好

在driver初始化完成后,不要立刻执行下载操作,用Firefox的内置JavaScript API重新设置关键偏好,确保会话中的配置是正确的:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

# 初始化FirefoxOptions
options = Options()
# 原有配置
options.set_preference("browser.download.dir", "C:\\Windows\\temp")
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
options.set_preference("pdfjs.disabled", True)
options.set_preference("plugin.scan.plid.all", False)
options.set_preference("plugin.scan.Acrobat", "99.0")

# 启动driver
driver = webdriver.Firefox(firefox_options=options)

# 启动后重新应用核心下载偏好
driver.execute_script("""
    Services.prefs.setIntPref("browser.download.folderList", 2);
    Services.prefs.setStringPref("browser.download.dir", "C:\\Windows\\temp");
    Services.prefs.setBoolPref("pdfjs.disabled", true);
""")

# 执行下载操作
driver.get("你的下载页面URL")
# 触发下载的代码...

2. 升级GeckoDriver版本

你使用的GeckoDriver 0.19-0.21版本和Firefox 59/60配合时,确实存在一些配置传递的小bug。建议升级到GeckoDriver 0.23.0,这个版本专门修复了Firefox 60+系列的配置同步问题,能很大概率解决初始化时偏好不生效的问题。

3. 排查系统目录的权限问题

C:\Windows\temp是系统敏感目录,自动化进程可能没有足够的写入权限,导致下载失败。你可以先换成一个非系统目录(比如C:\Users\你的用户名\Downloads\test_download)测试,如果换目录后下载正常,那需要给运行自动化的用户赋予C:\Windows\temp的写入权限。

4. 启用日志排查细节

启动GeckoDriver时开启日志,能帮你定位具体的失败原因:

driver = webdriver.Firefox(firefox_options=options, service_log_path='geckodriver.log')

查看日志中的Download相关条目,会明确提示是权限不足、路径无效还是偏好未生效的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:30:19