2016-11-17 12 views
2

私は、セレンを使ってWebページでファイルのダウンロードを自動化しようとしています。 たとえば、https://github.com/mozilla/geckodriver/releasesからgeckodriverのダウンロードを自動化しようとします。Python Selenium:Firefoxの環境設定に失敗しました

私のPythonのコードは以下の通りです:

私が使用したコードだこと:

profile = webdriver.FirefoxProfile() 
profile.set_preference("browser.download.folderList",2) 
profile.set_preference("browser.download.manager.showWhenStarting",False) 
profile.set_preference("browser.download.dir", path) 
profile.set_preference("browser.download.downloadDir", path) 
profile.set_preference("browser.download.defaultFolder", path) 
profile.set_preference("browser.helperApps.alwaysAsk.force", False) 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip, application/tar+gzip, application/x-gtar, application/x-compressed") 
profile.set_preference("pdfjs.disabled", True) 
profile.update_preferences() 
browser = webdriver.Firefox(profile) 
browser.get('https://github.com/mozilla/geckodriver/releases') 

sleep(5) 
try: 
    field = browser.find_element_by_xpath("//ul[@class='release-downloads']//li/a/strong[contains(text(),'geckodriver-v0.11.1-linux64.tar.gz')]") 
    if(field != None): 
    field.click() 
    find = True 
except Exception,e: 
    print str(e) 

私の問題は、私はこのコードをしようとした場合、私は、Firefoxのポップアップダウンロードを得たことである:

enter image description here

私はおそらく設定browser.helperApps.neverAsk.saveToDiskの設定が悪いと思ったので、zipファイルをダウンロードしようとしましたeでも同じ問題があります。それから私は、configについて見てみました:残念ながら、私はパラメータがデフォルト値に設定されていることがわかりました。例えば、私はbrowser.download.folderListの値が1ではない2実測値:

enter image description here

もbrowser.helperApps.neverAsk.saveToDiskはNULL値であり、そしてbrowser.download.dirは存在しません。

編集:好み

を設定せずにダウンロードしてくださいその後、私はこのコードで好みを設定せずに試してみてください。

browser = webdriver.Firefox() 
browser.get('https://github.com/mozilla/geckodriver/releases') 

sleep(5) 
try: 
    field = browser.find_element_by_xpath("//ul[@class='release-downloads']//li/a/strong[contains(text(),'geckodriver-v0.11.1-linux64.tar.gz')]") 
    if(field != None): 
    field.click() 
    find = True 
except Exception,e: 
    print str(e) 
    pass 

しかし、私は、私が削除したその設定の好みの一部のように同じ問題ではない持ってもらいます影響力。 しかし、私がFirefoxを手動で開き、ダウンロードリンクで手動でクリックすると、firefoxの確認ポップアップを使って問題なくファイルを直接ダウンロードできます。

私のコードに間違いがありますか?何が問題なの?

開発環境:Python2.7、selenium3.0.1、Firefoxの49

+0

私はこの問題をここで解決したと思います[Python Selenium Download Profile](http://stackoverflow.com/質問/ 41644381/python-set-firefox-preferences-for-selenium-download-location/41683377#41683377) 。 –

答えて

0

あなたは、MIMEタイプを区切るためにセミコロンを使用する必要があります。

profile.set_preference( "browser.helperApps.neverAsk.saveToDisk"、 "アプリケーション/ x-gzip;アプリケーション/ x-gzip;アプリケーション/ x-gtar;アプリケーション/ x圧縮 ")

関連する問題