我正试图通过电子下载一个带有Selenium Chromedriver的文件。由于我们无法通过选择要下载的文件夹来处理弹出窗口,所以我试图以这样的方式避免弹出:
prefs.put("download.prompt_for_download", false);但不起作用。完整的代码是:
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> prefs = new HashMap<>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.default_directory", LocationUtil.getDownloadFolderPath());
prefs.put("download.prompt_for_download", false);
prefs.put("safebrowsing.enabled", false); // to disable security check eg. Keep or cancel button
options.setExperimentalOption("prefs", prefs);
ChromeDriver chromeDriver= new ChromeDriver(options);还试图让这些prefs通过功能,但没有成功。
((MutableCapabilities) chromeDriver.getCapabilities()).setCapability(ChromeOptions.CAPABILITY, options);版本如下:
在没有电子应用程序弹出窗口的情况下,我如何下载特定目录中的文件?UPD:用浏览器Chrome测试-一切都很好。
发布于 2020-05-25 07:57:36
看来你离得够近了。
除了将download.prompt_for_download的首选项添加到false之外,您还需要设置更多的首选项,如下所示:
xml文件的示例,您需要添加:
prefs.put("download.extensions_to_open","application/xml");safebrowsing.enabled,如下所示:
prefs.put("safebrowsing.enabled",真);safebrowsing-disable-download-protection
options.addArguments("--safebrowsing-disable-download-protection");safebrowsing-disable-extension-blacklist
options.addArguments("safebrowsing-disable-extension-blacklist");elementToBeClickable()。
新WebDriverWait(驱动程序,WebDriverWait)为了从网站下载一个xml文件,您的有效代码块将将它合并起来,作为一个演示:
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> prefs = new HashMap<>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.default_directory", LocationUtil.getDownloadFolderPath());
prefs.put("download.prompt_for_download", false);
prefs.put("safebrowsing.enabled", true);
options.setExperimentalOption("prefs", prefs);
ChromeDriver chromeDriver= new ChromeDriver(options);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
options.addArguments("start-maximized");
options.addArguments("--safebrowsing-disable-download-protection");
options.addArguments("safebrowsing-disable-extension-blacklist");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.landxmlproject.org/file-cabinet");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='MntnRoad.xml']//following::span[1]//a[text()='Download']"))).click();浏览器快照:

参考文献
您可以在以下网站找到一些相关的参考讨论:
https://stackoverflow.com/questions/61852540
复制相似问题