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