使用Selenium和Java将多个文件下载到多个位置

时间:2017-06-12 15:27:00

标签: java selenium

我目前正在使用Selenium从我们校园周围的几十台MFD打印机中提取一些数据,而且它们大部分时间都很顺利。我可以登录,点击菜单,然后将文件下载到我设置的位置。我需要做的是依次登录每个打印机并将同一文件下载到不同的文件夹。到目前为止,相关代码如下所示:

    chromePrefs.put("profile.default_content_settings.popups", 0);
    chromePrefs.put("download.default_directory", downloadFilepath);

    HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
    options.setExperimentalOption("prefs", chromePrefs);
    options.addArguments("--test-type");

    cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    cap.setCapability(ChromeOptions.CAPABILITY, options);

    webDriver = new ChromeDriver(cap);
    wait = new WebDriverWait(webDriver, 20);
    String fileName = "Y:/MFDAutomationEnv/test_mfd_list.txt";

    readFile(fileName);
    if(fileData == null){
        logPrint("Couldn't read from " + fileName);
        return;
    }

    for(int currentMFD = 0; currentMFD < fileData.length; currentMFD++){
        //navigate
        mfdDownloadButton(ip);
        mfdLogout(ip);
    }

private static int mfdDownloadButton(String ip){
    try{

        chromePrefs.put("download.default_directory", downloadFilepath + "someSubDirectory/");
wait.until(ExpectedConditions.elementToBeClickable(By.id("btnEXE"))).click();
    }
    catch(Exception e){
        logPrint("Failed to find download button for " + ip);
        return 1;
    }
    return 0;
}

基本上,有没有办法在不必重新安装全新的webdriver的情况下即时更改下载位置?

1 个答案:

答案 0 :(得分:0)

您正在做的是将浏览器配置为自动将文件下载到指定位置。您可以使用另一种方法。导航到下载文件按钮所在的页面后,您是否可以获取该文件的URL?如果是,您可以使用Apache HttpClient下载该文件。 Here是关于它的好文章。