Chrome 无法设置download.prompt_for_download false,以避免在Electron应用程序中下载文件时弹出

3df52oht  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(193)

我试图通过电子下载一个文件与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);


也试图通过能力把这些偏好,但没有成功。
((MutableCapabilities) chromeDriver.getCapabilities()).setCapability(ChromeOptions.CAPABILITY, options);版本:

  • Chrome驱动程序80.0.3987.16
  • Selenium Java 3.141.59

我如何在Electron应用程序中没有弹出窗口的情况下将文件下载到特定目录中?UPD:使用浏览器Chrome进行测试-一切正常。

brtdzjyr

brtdzjyr1#

看起来你离得很近
除了将download.prompt_for_download的首选项添加到false之外,您还需要设置以下几个首选项:

  • 您需要添加您希望自动下载的文件类型。作为自动下载xml文件的示例,您需要添加:
prefs.put("download.extensions_to_open", "application/xml");

字符串

  • 您需要启用/禁用safebrowsing.enabled,如下所示:
prefs.put("safebrowsing.enabled", true);

  • 现在需要将参数添加到safebrowsing-disable-download-protection
options.addArguments("--safebrowsing-disable-download-protection");

  • 接下来,需要将参数添加到safebrowsing-disable-extension-blacklist
options.addArguments("safebrowsing-disable-extension-blacklist");

  • 最后,要单击元素以启动下载,您需要诱导elementToBeClickable()的WebDriverWait。
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("element_xpath"))).click();


作为一个演示,如果要从website下载一个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();


浏览器快照:
x1c 0d1x的数据

参考资料

您可以在以下内容中找到一些相关的参考讨论:

  • 如何使用Chrome Chromedriver 79和Selenium Java下载.xml文件时隐藏警告“这种类型的文件可能会损害您的计算机”
  • 如何下载XML文件避免弹出窗口这种类型的文件可能会通过ChromeDriver和Chrome使用Python中的Selenium损害您的计算机

相关问题