it-swarm.com.de

Herunterladen einer Datei an einem angegebenen Ort über Python und Selenium mit dem Chrome-Treiber

Ich versuche, einige Links automatisch durch die Klick-Funktionalität von Selenium herunterzuladen, und ich verwende einen chrome Webdriver und Python als Programmiersprache. Wie kann ich das Download-Verzeichnis über das Python-Programm auswählen, damit es nicht im Standard-Download-Verzeichnis heruntergeladen wird. Ich habe eine Lösung für Firefox gefunden, aber der Download-Dialog erscheint jedes Mal, wenn auf den Link geklickt wird, was in Chrome nicht der Fall ist.

11
Shubham Goyal

Update 2018:

Es ist kein gültiger Chrome-Befehlszeilenschalter, siehe source code use hoju answer , um die Voreinstellungen festzulegen.

Original:

Sie können ein Profil für Chrome erstellen und den Speicherort für die Tests festlegen. Hier ist ein Beispiel:

from Selenium import webdriver

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

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

Ich habe festgestellt, dass die akzeptierte Lösung nicht funktioniert hat, jedoch hat diese geringfügige Änderung funktioniert: 

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

Wenn Sie eine Linux-Distribution verwenden 

Verwenden Sie diesen 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

das genaue problem habe ich auch beim versuchen genau das zu machen was du willst :)

Für chrom:

from Selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
prefs = {"profile.default_content_settings.popups": 0,
             "download.default_directory": 
                        r"C:\Users\user_dir\Desktop\\",#IMPORTANT - ENDING SLASH V IMPORTANT
             "directory_upgrade": True}
options.add_experimental_option("prefs", prefs)
browser=webdriver.Chrome(<chromdriver.exe path>, options=options)

Für Firefox: Folgen Sie diesem Blog für die Antwort: https://srirajeshsahoo.wordpress.com

Der Blog sagt alles über das Pop-up und Download-Verzeichnis und wie es geht

0

Verwenden Sie den folgenden Code, um das Download-Verzeichnis und den ausführbaren Pfad des Chrome-Treibers anzugeben.

from Selenium import webdriver
options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=C:/Your_Directory")
driver = webdriver.Chrome(options=options ,executable_path='C:/chromedriver')

ändere den Pfad in deinem Code entsprechend.

0
vsnahar