无法使用Selenium WebDriver在Chrome中处理下载文件

时间:2019-02-24 12:05:41

标签: selenium selenium-webdriver selenium-chromedriver

在AUT中,当用户单击Excel按钮时,应下载文件。 过去,在其他Web应用程序中,我使用chrome选项将其处理为: 但是在我当前的应用程序中,我看到当用户单击Excel按钮时,打开了一个新选项卡,其中弹出了文件浏览器。这里的问题是如何处理这个问题。即使我切换了窗口句柄,我仍然会弹出不需要的弹出窗口。我该如何处理这种情况。

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
        chromePrefs.put("profile.default_content_settings.popups", 0);
        chromePrefs.put("download.default_directory", download_dir);
        chromeOptions.setExperimentalOption("prefs", chromePrefs);

2 个答案:

答案 0 :(得分:0)

这是我过去用来下载文件的(python)代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_experimental_option("prefs", {
  "download.default_directory": r"C:\Users\xxx\downloads\Test",
  "download.prompt_for_download": False,
  "download.directory_upgrade": True,
"safebrowsing.enabled": True
})

(显然,这是在python中,我可以尝试制作Java版本,也可以尝试,如果愿意的话)

答案 1 :(得分:0)

我开发了library,在这种情况下,它的处理更为清晰。您可以使用给定的下载文件夹生成ChromeOptions对象,并使用单行方法调用来下​​载文件并验证继承:

private SeleniumDownloadKPI seleniumDownloadKPI;

@BeforeEach
void setUpTest() {
    seleniumDownloadKPI =
         new SeleniumDownloadKPI("/tmp/downloads");
    ChromeOptions chromeOptions =
            seleniumDownloadKPI.generateDownloadFolderCapability();
    driver = new ChromeDriver(chromeOptions);
}

@Test
void downloadAttachTest() throws InterruptedException {
    adamInternetPage.navigateToPage(driver);
    seleniumDownloadKPI.fileDownloadKPI(
            adamInternetPage.getFileDownloadLink(), "SpeedTest_16MB.dat");
    waitBeforeClosingBrowser();
}