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:
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:
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.
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) . –