web-dev-qa-db-fra.com

Comment contrôler le téléchargement de fichiers avec Selenium + Python dans Chrome

Où puis-je trouver la documentation qui décrit les options que je peux utiliser avec Selenium et Chrome navigateur Web? Je veux ouvrir un lien dans un navigateur Web (pour obtenir des informations d'identification) mais pas télécharger le correspondant (.pdf ou .tiff ou .jpeg). J'utilise Python 2.7, Selenium 3.0.1 et Chrome version 54.0.2840.99 (et chromedriver). exe) sur Windows 7 Laptop.

# Chrome web browser.
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')  
#options.add_argument('--disable-download-notification') #doesn't seems to work 
#options.add_experimental_option("prefs", {"download.default_directory","C:\Users\xxx\downloads\Test"}) # doesn't work
#options.add_experimental_option("prefs", {"download.Prompt_for_download": False}) # doesn't seems to work
#options.add_experimental_option("prefs", {'profile.default_content_settings': {'images': 2}})# this will disable image loading in the browser
options.add_argument("user-agent="+user_agent_profile)
driver_main = webdriver.Chrome(chrome_options=options)

# Opening the web application portail.
driver_main.get("https://my_link")

J'ai trouvé de nombreuses discussions sur ce sujet mais aucune des solutions ne fonctionne. Par exemple:

add_experimental_option("prefs", {"download.default_directory","C:\Users\xxx\downloads\Test"})

ne fonctionne pas pour moi.

Pareil pour:

add_experimental_option("prefs", {"download.Prompt_for_download": False})

(J'essaye aussi avec "faux").

Tandis que:

add_argument("user-agent="+user_agent_profile)

Semble fonctionner!

Je ne suis pas sûr de comprendre ce qui ne va pas

Le problème que j'ai obtenu est que, il commence à télécharger le fichier chaque fois que j'ouvre un lien avec le fichier de nom (1) fichier (2) .... fichier (99) puis à partir de 100, il ouvre une fenêtre contextuelle "Enregistrer sous" . Je voudrais donc soit ne pas télécharger le fichier du tout, soit le déplacer dans un dossier spécifique de la "Corbeille".

Comment trouver les options pouvant être utilisées avec add_argument et add_argument? J'ai essayé de regarder Chrome: // about/mais je n'ai pas pu voir de correspondance directe.

Merci beaucoup.

À votre santé.

Fabien.

8
Dr. Fabien Tarrade

Le chemin que vous avez déclaré pour le répertoire par défaut n'est pas valide. Échappez aux barres obliques inversées ou fournissez une chaîne littérale.

options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
  "download.default_directory": r"C:\Users\xxx\downloads\Test",
  "download.Prompt_for_download": False,
  "download.directory_upgrade": True,
  "safebrowsing.enabled": True
})
driver = webdriver.Chrome(chrome_options=options)

Voici les préférences disponibles:

https://cs.chromium.org/chromium/src/chrome/common/pref_names.cc

17
Florent B.

Cela fait toute la différence dans le monde d'utiliser la barre oblique "/" pour spécifier le répertoire dans lequel vous voulez que les choses soient téléchargées.

Je suppose que c'est parce que ce répertoire sera exporté vers quelque chose comme Powershell, où la barre oblique inverse "\" ne fonctionnera pas correctement.

0