set_preference在FireFox配置文件上不起作用 [英] set_preference does not work on FireFox profile
问题描述
我有一个python脚本正在尝试自动下载excel文件.我试图直接解决Firefox配置文件,并且效果很好:
I have a python script which is trying to download an excel file automatically. I've tried to address firefox profile directly and it works fine:
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()
但是当我尝试以编程方式设置配置文件时,它不起作用;仍然有下载弹出窗口:
But when I try to set a profile programmatically, it does not work; there is still download pop-up:
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'))
;但没有任何变化.
I also changed the line fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')
to fp.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-excel'))
; but there was no changes.
任何想法我错了吗?
我尝试过
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")
结果没有变化.
推荐答案
根据 browser.helperApps.neverAsk.saveToDisk
首选项值应该是逗号分隔的MIME类型列表.
According to about:config
docs, browser.helperApps.neverAsk.saveToDisk
preference value should be a comma-separated list of MIME-types.
这应该为您工作:
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
演示(使用 XLSX Sample
网页):
Demo (using XLSX Sample
web page):
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()
结果,文件被下载到当前工作目录中.
As the result, the file is downloaded in the current working directory.
这篇关于set_preference在FireFox配置文件上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!