设置 Firefox 配置文件以使用 Selenium 和 Java 自动下载文件

2022-09-01 07:17:29

我想使用Selenium WebDriver和Java验证文件下载。要下载的文件为 PDF 格式。当WebDriver单击AUT中的“下载”链接时,Firefox会打开以下下载确认窗口:

Download Confirmation Window

我希望Firefox自动下载文件而不显示上面的确认窗口,所以我使用了下面的代码:

FirefoxProfile firefoxProfile=new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
firefoxProfile.setPreference("browser.download.dir",downloadPath);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
WebDriver driver=new FirefoxDriver(firefoxProfile); 

但仍然Firefox显示相同的窗口。如何设置Firefox个人资料,以便自动下载PDF文件而不显示确认对话框?


答案 1

就像@Jason建议的那样,它很可能是另一种哑剧类型。要获取哑剧类型:

  • 开放式开发人员工具
  • 转到网络
  • 点击链接下载pdf
  • 在网络面板中,选择第一个请求
  • mime 类型是响应标头中的内容类型:

enter image description here

然后用 Firefox 下载 PDF:

FirefoxOptions options = new FirefoxOptions();
options.setPreference("browser.download.folderList", 2);
options.setPreference("browser.download.dir", "C:\\Windows\\temp");
options.setPreference("browser.download.useDownloadDir", true);
options.setPreference("browser.download.viewableInternally.enabledTypes", "");
options.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf;text/plain;application/text;text/xml;application/xml");
options.setPreference("pdfjs.disabled", true);  // disable the built-in PDF viewer

WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.mozilla.org/en-US/foundation/documents");
driver.findElement(By.linkText("IRS Form 872-C")).click();

答案 2

它目前在Firefox 57.0b13中的工作方式是

FirefoxProfile profile = new FirefoxProfile();
// profile.setPreference("browser.download.useDownloadDir", true); This is true by default. Add it if it's not working without it.

profile.setPreference("browser.download.folderList",2); //Use for the default download directory the last folder specified for a download
profile.setPreference("browser.download.dir", "/Path/to/directory"); //Set the last directory used for saving a file from the "What should (browser) do with this file?" dialog.
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); //list of MIME types to save to disk without asking what to use to open the file
profile.setPreference("pdfjs.disabled", true);  // disable the built-in PDF viewer

firefoxOptions.setProfile(profile);

有关每个火狐配置文件设置的详细信息


推荐