2014-09-09 3 views
1

나는 자동으로 Excel 파일을 다운로드하려고하는 python 스크립트가 있습니다. 나는 파이어 폭스 프로파일을 직접적으로 처리하려고 시도했다. 그리고 그것은 잘 작동한다. :set_preference가 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.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-excel'))에 선 fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')을 변경

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() 

; 그러나 아무 변화도 없었다.

나는 무엇이 잘못 되었습니까?

편집 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") 

을 시도

결과에서는 아무 변경 사항도 없습니다.

답변

5

about:config docs에 따르면 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() 

이 파일은 현재 작업 디렉토리에 다운로드됩니다.

+0

문제가 해결되지 않았습니다. –

+1

@ZeinabAbbasi 다운로드 할 파일의 MIME 유형을 확인할 수 있습니까? – alecxe

+0

확장자는'.xlsx'입니다. 그것은 Microsoft Excel 2007 파일입니다. 하지만 코드에서 MIME 형식을 확인하는 방법을 모르겠습니다. 제발 도와 줄 수 있니? –

1

Java에서 잘 작동하는이 기능은 Python에서 작동한다고 생각합니다.

FirefoxProfile firefoxProfile = new FirefoxProfile(); 
firefoxProfile.setAcceptUntrustedCertificates(true); 
firefoxProfile.setPreference("browser.download.folderList",2); 
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false); 
firefoxProfile.setPreference("browser.download.dir","C:\\Users\\Administrateur\\Downloads\\"); 
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream"); 
driver = new FirefoxDriver(firefoxProfile); 
+0

작동하지 않았다 :-(감사합니다. –

관련 문제