2015-12-29 24 views
9

Proszę znaleźć poniższy kod z funkcjami chrome. W rzeczywistości przeglądarka nie pobiera pliku do określonej ścieżki.Jak ustawić domyślny katalog pobierania w funkcjach selenowych Chrome?

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; 
} 

Odpowiedz

17

Dla Chromedriver wypróbować z:

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

Uwaga: - W oknach trzeba użyć \\ dla ścieżki natomiast jeśli używasz Linuksa lub Mac następnie użyć //

Nadzieja to pomaga. :)

+2

Albo po prostu użyć File.separator zamiast ukośniki –

+0

absolutną rację .. dzięki za dzielenie –

+0

Co jeśli muszę zmienić ścieżkę pobierania podczas wykonywania? Mam na myśli ustalenie własnej ścieżki dla każdego testu. – Orest

2

Ans, które pomogą mi rozwiązać ten problem w systemie Windows (https://bugs.chromium.org/p/chromedriver/issues/detail?id=783).

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); 
Powiązane problemy