2015-12-29 2 views
9

Den folgenden Code finden Sie mit den Chrome-Funktionen. Tatsächlich lädt der Browser die Datei nicht in den angegebenen Pfad herunter.Wie Standard-Download-Verzeichnis in selen Chrome-Funktionen festlegen?

private static DesiredCapabilities getChromeCapabilities() throws Exception { 

    String chromePath = BrowserUtil.class.getResource("/Browserdrivers/chromedriver.exe").getPath(); 
    System.setProperty("webdriver.chrome.driver", chromePath); 
    String downloadFilepath = "C:\\TestDownloads"; 
    ChromeOptions options = new ChromeOptions(); 
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
    chromePrefs.put("profile.default_content_settings.popups", 0); 
    chromePrefs.put("download.default_directory", downloadFilepath); 
    options.setExperimentalOption("prefs", chromePrefs); 
    options.addArguments("--test-type"); 
    options.addArguments("start-maximized", "disable-popup-blocking"); 

    DesiredCapabilities chromeCapabilities = DesiredCapabilities.chrome(); 
    setProxy(chromeCapabilities); 
    chromeCapabilities.setPlatform(Platform.WINDOWS); 
    chromeCapabilities.setCapability("name", MDC.get("testname")); 
    chromeCapabilities.setCapability(ChromeOptions.CAPABILITY, options); 
    return chromeCapabilities; 
} 

Antwort

17

Für Chromedriver versuchen, mit:

String downloadFilepath = "/path/to/download"; 
HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
chromePrefs.put("profile.default_content_settings.popups", 0); 
chromePrefs.put("download.default_directory", downloadFilepath); 
ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOption("prefs", chromePrefs); 
DesiredCapabilities cap = DesiredCapabilities.chrome(); 
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
cap.setCapability(ChromeOptions.CAPABILITY, options); 
WebDriver driver = new ChromeDriver(cap); 

Hinweis: - In Windows Sie \\ für den Pfad verwenden müssen, während, wenn Sie Linux verwenden oder Mac verwenden Sie dann //

Hoffnung das hilft. :)

+2

Oder Sie werden nur File.separator anstelle der Schrägstriche –

+0

Absolut richtig .. Dank für die gemeinsame Nutzung –

+0

Was passiert, wenn ich brauche, während der Laufzeit Download-Pfad zu ändern? Ich meine, für jeden Test einen eigenen Pfad festlegen. – Orest

2

Die ans, die mir helfen, dieses Problem auf Windows (https://bugs.chromium.org/p/chromedriver/issues/detail?id=783) zu lösen.

Map<String, Object> prefs = new HashMap<String, Object>(); 
prefs.put("download.default_directory", System.getProperty("user.dir")+ File.separator + "externalFiles" + File.separator + "downloadFiles"); 
ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOption("prefs", prefs); 
ChromeDriver driver = new ChromeDriver(options);