Impossible de supprimer la fenêtre du fichier de téléchargement du système d’exploitation même après avoir défini les préférences du navigateur via webdriver + python

Je sais que cette question a déjà été posée mais après avoir essayé des suggestions, je reçois constamment la fenêtre du fichier de téléchargement du système d’exploitation. Ce que je tente de faire est de télécharger un fichier pdf . J’ai défini les préférences du navigateur, mais malgré cela, il ne supprime pas la fenêtre du système d’exploitation.

Voici l’extrait de code que j’ai écrit:

firefoxProfile = webdriver.FirefoxProfile() firefoxProfile.set_preference('browser.download.folderList', 2) firefoxProfile.set_preference('browser.download.manager.showWhenStarting', False) firefoxProfile.set_preference('browser.download.dir', '/media/pinku/Pinku') firefoxProfile.set_preference('browser.helperApps.alwaysAsk.force', False) firefoxProfile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream') self.driver = webdriver.Firefox(firefoxProfile) 

J’utilise Ubuntu 12.10, Firefox, webdriver, python

Je pense que vous avez peut-être mal compris le type MIME. Essaye ça

 firefoxProfile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf,application/x-pdf') 

Une discussion sur les types MIME pdf peut être trouvée ici. Vous devriez vérifier le type MIME que votre firefox voit quand vous essayez de télécharger le pdf. Cela pourrait me tromper par le serveur!

Note: chaque fois que ce sujet est soulevé (téléchargement de fichiers via selenium webdriver), je vous déconseille fortement de le faire! Lisez l’article intitulé “Comment télécharger des fichiers avec Selenium et pourquoi vous ne devriez pas” pour un raisonnement. Fondamentalement, il suggère d’utiliser d’autres moyens pour tester les téléchargements directs.

Mise à jour: je n’ai pas mis les deux types de mime dans une chaîne avant, ce qui était faux. J’ai également ajouté la suggestion de vérifier ce que le serveur livre réellement.

J’ai travaillé avec firefox 24.03 (c’est la version d’ESR) Cette version de firefox a introduit pdfjs. Cela ouvre le PDF dans le navigateur.

Donc, vous devez supprimer cela. Voici le profil code / firefox qui a fonctionné pour moi.

 fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList",2) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir","C:\\temp") fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/pdf") fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf") fp.set_preference("pdfjs.disabled", True) driver = webdriver.Firefox(firefox_profile=fp) 

Avec ce profil tous mes téléchargements de pdf vont à “C: \ temp”

J’ai eu un problème similaire parce que le type MIME retourné par le serveur était “text / plain” au lieu de “text / csv”.

C’est ce qui a fonctionné pour moi (en utilisant watir-webdriver):

 profile = Selenium::WebDriver::Firefox::Profile.new profile['browser.download.folderList'] = 2 # custom location profile['browser.download.dir'] = download_directory profile['browser.helperApps.neverAsk.saveToDisk'] = "text/plain" browser = Watir::Browser.new :firefox, :profile => profile 

Plus d’infos sur le téléchargement avec watir-webdriver ici: http://watirwebdriver.com/browser-downloads/