java - 使用 Selenium Webdriver 下载 Excel 时如何处理 Firefox 中的下载弹出窗口

标签 java selenium-webdriver selenium-firefoxdriver

我正在尝试从 Firefox 和 Webdriver 下载 Excel 文件,但无法处理下载弹出窗口。

当单击按钮时,我需要自动下载文件,而不显示弹出窗口。

这是我的代码:

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", Constant.Downloaded_Path);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv/xls/xlsx");
firefoxProfile.setPreference("browser.helperApps.neverAsk.openFile",
    "text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
firefoxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
firefoxProfile.setPreference("browser.download.manager.alertOnEXEOpen", false);
firefoxProfile.setPreference("browser.download.manager.focusWhenStarting", false);
firefoxProfile.setPreference("browser.download.manager.useWindow", false);
firefoxProfile.setPreference("browser.download.manager.showAlertOnComplete", false);
firefoxProfile.setPreference("browser.download.manager.closeWhenDone", false);
return firefoxProfile;

但是,上面的代码不起作用。有人可以帮忙吗?

最佳答案

首先需要获取文件对应的mime类型:

  • 打开开发者工具,然后打开“网络”选项卡
  • 返回页面并点击要下载的文件
  • 返回网络面板并选择第一个请求
  • 从响应 header 中复制 Content-Type 右侧的 mime 类型:

enter image description here

  • 使用您的 MIME 类型设置首选项“browser.helperApps.neverAsk.saveToDisk”
  • 确保下载文件夹“browser.download.dir”存在

这是一个使用 Firefox 的工作示例:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\Windows\\temp");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.ms-excel");
profile.setPreference("pdfjs.disabled", true);  // disable the built-in PDF viewer

WebDriver driver = new FirefoxDriver(profile);
driver.get("http://www.exinfm.com/free_spreadsheets.html");
driver.findElement(By.linkText("Capital Budgeting Analysis")).click();

关于java - 使用 Selenium Webdriver 下载 Excel 时如何处理 Firefox 中的下载弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355204/

相关文章:

java - Java 中的继承和构造函数

java - 如何将 Spring Loaded 与 Vaadin TouchKit 应用程序结合起来?

c# - 如何使用 Selenium for C# 通过 XPath 查找文本?

java - Selenium FirefoxDriver - 如果使用 Geckodriver 单击关闭窗口,WebElement.click() 将被挂起

java - 使用相同的 Firefox 窗口在 Selenium WebDriver (Java) 中运行多个测试

Java 泛型接口(interface)返回泛型

java - Wildfly 10.1.0 中的 session 问题

Python + Selenium -- 无法点击元素

sql-server - Protractor 查询 SQL Server 数据库 (MSSQL)

java - HtmlUnit 中切换窗口