2

J'essaye d'automatiser un téléchargement de fichier dans une page Web utilisant le sélénium. Nous pouvons considérer par exemple que je vais essayer d'automatiser le téléchargement de geckodriver de https://github.com/mozilla/geckodriver/releases.Python Selenium: Définir les préférences de Firefox a échoué

Mon code python est le suivant:

C'est le code que je:

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) 

Mon problème est que si j'essaie ce code je suis arrivé le téléchargement popup de Firefox:

Je pensais que peut-être je définir une mauvaise valeur de la préférence browser.helperApps.neverAsk.saveToDisk, alors j'ai essayé de télécharger le fichier zip e mais j'ai eu le même problème. Puis j'ai regardé sur: config mais malheureusement j'ai trouvé que les paramètres sont réglés sur des valeurs par défaut. Par exemple, je trouve la valeur de browser.download.folderList est 1 mais pas 2:

enter image description here

également browser.helperApps.neverAsk.saveToDisk est la valeur nulle et browser.download.dir n'existe pas.

Edit: Télécharger sans définition des préférences

Alors je tente sans définir les préférences avec ce code:

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 

Mais je reçois le même problème comme que les préférences de réglage partie que je supprimé n'a pas toute influence. Mais en tenant compte du fait que si j'ouvre Firefox manuellement et que je clique manuellement dans le lien de téléchargement, je peux télécharger le fichier directement avec le popup popup de firefox sans aucun problème.

Y a-t-il des erreurs dans mon code? ou quel est le problème?

Environnement de développement: python2.7, selenium3.0.1, Firefox 49.

+0

Je crois que j'ai résolu ce problème ici [Python Selenium Download Profile] (http://stackoverflow.com/ questions/41644381/python-set-firefox-preferences-pour-sélenium-download-location/41683377 # 41683377) . –

Répondre

0

Vous devez utiliser virgule pour séparer les types MIME:

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