web-dev-qa-db-fra.com

Téléchargement d'un fichier à un emplacement spécifié via Python et Selenium à l'aide du pilote Chrome

J'essaie de télécharger automatiquement certains liens via la fonctionnalité de clic de Selenium et j'utilise un chrome webdriver et python comme langage de programmation. Comment puis-je sélectionner le répertoire de téléchargement via le programme python afin qu'il ne soit pas téléchargé dans le répertoire de téléchargement par défaut. J'ai trouvé une solution pour Firefox mais la boîte de dialogue de téléchargement continue à apparaître chaque fois qu'il clique sur le lien, ce qui ne se produit pas dans Chrome.

11
Shubham Goyal

Mise à jour 2018:

Son commutateur de ligne de commande Chrome non valide, voir le code source utilisez hoju answer ci-dessous pour définir les Préférences.

Original:

Vous pouvez créer un profil pour chrome et définir l'emplacement de téléchargement des tests. Voici un exemple:

from Selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=C:/Downloads")

driver = webdriver.Chrome(chrome_options=options)
4
Sarunas Urbelis

J'ai trouvé que la solution acceptée ne fonctionnait pas, mais ce léger changement a fonctionné: 

import webdriver
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : '/path/to/dir'}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
36
hoju

Si vous utilisez la distribution linux 

Utilisez ce code

prefs = {'download.Prompt_for_download': False,
         'download.directory_upgrade': True,
         'safebrowsing.enabled': False,
         'safebrowsing.disable_download_protection': True}

options.add_argument('--headless')
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome('chromedriver.exe', chrome_options=options)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
driver.desired_capabilities['browserName'] = 'ur mum'
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': r'C:\chickenbutt'}}
self.driver.execute("send_command", params)
0
Alex Montoya