首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将download.prompt_for_download false设置为在下载电子应用程序中的文件时避免弹出

无法将download.prompt_for_download false设置为在下载电子应用程序中的文件时避免弹出
EN

Stack Overflow用户
提问于 2020-05-17 13:26:00
回答 1查看 3.3K关注 0票数 1

我正试图通过电子下载一个带有Selenium Chromedriver的文件。由于我们无法通过选择要下载的文件夹来处理弹出窗口,所以我试图以这样的方式避免弹出:

代码语言:javascript
复制
prefs.put("download.prompt_for_download", false);

但不起作用。完整的代码是:

代码语言:javascript
复制
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);版本如下:

  • ChromeDriver 80.0.3987.16
  • Selenium Java 3.141.59

在没有电子应用程序弹出窗口的情况下,我如何下载特定目录中的文件?UPD:用浏览器Chrome测试-一切都很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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");
  • 最后,要单击元素来启动下载,您需要为WebDriverWait导入elementToBeClickable()。 新WebDriverWait(驱动程序,WebDriverWait)

为了从网站下载一个xml文件,您的有效代码块将将它合并起来,作为一个演示:

代码语言:javascript
复制
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();

浏览器快照:

参考文献

您可以在以下网站找到一些相关的参考讨论:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61852540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档