set_preference在FireFox配置文件上不起作用 [英] set_preference does not work on FireFox profile

查看:107
本文介绍了set_preference在FireFox配置文件上不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆