Skip to main content
 首页 » 编程设计

python之set_preference 不适用于 FireFox 配置文件

2025年05月04日17mfryf

我有一个 python 脚本,它试图自动下载一个 excel 文件。我试图直接处理 firefox 配置文件并且它工作正常:

path = '\\path\\to\\firefox\\default\\profile\\' 
fp = webdriver.FirefoxProfile(path) 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.maximize_window() 
driver.get('url')  
driver.find_element_by_id('downloadButton').click() 
time.sleep(5) 
driver.close() 

但是当我尝试以编程方式设置配置文件时,它不起作用;仍然有下载弹窗:

fp = webdriver.FirefoxProfile() 
fp.set_preference('browser.download.folderList', 2) 
fp.set_preference('browser.download.manager.showWhenStarting', False) 
fp.set_preference('browser.download.dir', os.getcwd()) 
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx') 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.maximize_window() 
driver.get('url')  
driver.find_element_by_id('downloadButton').click() 
time.sleep(5) 
driver.close() 

我还将行 fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx') 更改为 fp.set_preference('browser. helperApps.neverAsk.saveToDisk', ('application/vnd.ms-excel'));但没有任何变化。

知道我做错了什么吗?

编辑 1:

我试过了

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream") 

和

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 

结果没有变化。

请您参考如下方法:

根据 about:config文档,browser.helperApps.neverAsk.saveToDisk 首选项值应该是逗号分隔的 MIME 类型列表。

这个应该适合你:

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream") 

演示(使用 XLSX Sample 网页):

import os 
from selenium import webdriver 
import time 
 
url = "http://file-sample.com/xlsx/" 
 
# configuring profile 
fp = webdriver.FirefoxProfile() 
fp.set_preference('browser.download.folderList', 2) 
fp.set_preference('browser.download.manager.showWhenStarting', False) 
fp.set_preference('browser.download.dir', os.getcwd()) 
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') 
 
# open the web page and download the file 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.maximize_window() 
driver.get(url) 
driver.find_element_by_xpath('//div[@class="post-entry"]//a').click() 
time.sleep(5) 
driver.close() 

结果,文件被下载到当前工作目录。