使用Selenium与Firefox下载PDF时,如何避免文件自动在浏览器打开?
解决Selenium+Firefox下载PDF后自动打开的问题
你的现有代码已经配置了基础的下载路径和PDF自动保存设置,但缺少几项关键的Firefox偏好配置,导致PDF下载后仍会自动打开。需要补充以下设置:
- 设置
browser.helperApps.neverAsk.openFile为application/pdf,告诉浏览器不要自动打开PDF类型文件 - 设置
browser.download.viewableInternally.enabledTypes为空字符串,移除PDF的内部查看权限 - 设置
plugin.disable_full_page_plugin_for_types为application/pdf,禁用PDF全屏查看插件
修正后的完整代码:
def __init__(self): self.options = webdriver.FirefoxOptions() # 指定下载路径为自定义目录(2代表自定义) self.options.set_preference("browser.download.folderList", 2) self.options.set_preference("browser.download.useDownloadDir", True) # 指定自动保存的文件类型为PDF self.options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf") # 禁用PDF.js内置查看器 self.options.set_preference("pdfjs.disabled", True) # 禁止自动打开PDF文件 self.options.set_preference("browser.helperApps.neverAsk.openFile", "application/pdf") # 移除PDF的内部查看权限 self.options.set_preference("browser.download.viewableInternally.enabledTypes", "") # 禁用PDF全屏插件 self.options.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf") self.firefox = webdriver.Firefox(service=Service(GeckoDriverManager().install()), options=self.options) self.firefox.maximize_window()
注意:确保Firefox浏览器版本和GeckoDriver版本兼容,避免因版本不匹配导致设置不生效。
内容的提问来源于stack exchange,提问作者Avestruz
相关产品推荐
相关产品推荐

