2

Ich versuche, einen Dateidownload in einer Webseite mit Selen zu automatisieren. Wir können zum Beispiel betrachten, dass ich versuchen werde, den Download von geckodriver von https://github.com/mozilla/geckodriver/releases zu automatisieren.Python Selenium: Set Firefox Präferenzen fehlgeschlagen

Mein Python-Code ist der folgende:

Das ist der Code, den ich verwendet:

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) 

Mein Problem ist, dass, wenn ich diesen Code versuche ich das Popup-Download von Firefox bekam:

enter image description here

Ich dachte, dass ich vielleicht einen schlechten Wert der Voreinstellung browser.helperApps.neverAsk.saveToDisk gesetzt habe, also habe ich versucht, das Zip-Fil herunterzuladen e, aber ich habe das gleiche Problem. Dann habe ich nach etwa: config geschaut, aber leider habe ich festgestellt, dass Parameter auf Standardwerte gesetzt sind. Zum Beispiel fand ich den Wert von browser.download.folderList 1 ist aber nicht 2:

enter image description here

auch ist browser.helperApps.neverAsk.saveToDisk Nullwert, und browser.download.dir existiert nicht.

Edit: Download ohne Einstellung Vorlieben

Dann versuche ich ohne Präferenzen mit diesem Code-Einstellung:

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 

Aber ich habe das gleiche Problem wie die Einstellungen festlegen, die Teil I hat nicht gelöscht jeder Einfluss. Aber unter Berücksichtigung, dass wenn ich Firefox manuell öffne und manuell auf den Download-Link klicke, kann ich die Datei direkt mit dem Bestätigungs-Popup von Firefox ohne Probleme herunterladen.

Gibt es Fehler in meinem Code? oder was ist das Problem?

Entwicklungsumgebung: python2.7, selenium3.0.1, Firefox 49.

+0

Ich glaube, ich habe dieses Problem hier gelöst [Python Selenium Download Profile] (http://stackoverflow.com/ Fragen/41644381/python-set-firefox-Präferenzen-für-selen-download-location/41683377 # 41683377) . –

Antwort

0

Sie Semikolon verwenden sollten Mime-Typen zu trennen:

profile.set_preference ("browser.helperApps.neverAsk.saveToDisk", " application/x-gzip; application/tar + gzip; application/x-gtar; application/x-compressed ")

Verwandte Themen