0

我正在尝试使用我在其他主题中在 Stackoverflow 上找到的代码来不向用户询问下载 PDF 文件应采取的操作。

我正在使用的代码是:

 FirefoxProfile specialProfile = new FirefoxProfile();
 specialProfile.SetPreference("browser.helperApps.alwaysAsk.force", false);
 specialProfile.SetPreference("browser.download.manager.showWhenStarting", false);
 specialProfile.SetPreference("browser.download.folderList", 2);
 specialProfile.SetPreference("browser.download.dir", Setup.DownloadContractPath);            
 specialProfile.SetPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
 specialProfile.SetPreference("browser.download.useDownloadDir", true);

 specialProfile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");

 return new FirefoxDriver(specialProfile);

但它似乎不适用于我的情况。我正在下载的文件类型是:PDF 即使我使用上面的代码,我也会得到以下屏幕:

在此处输入图像描述

有谁知道我可能做错什么?

4

2 回答 2

2

您使用的是什么 Firefox 和 Selenium 版本?

我使用的是 Firefox 20.0,默认行为是预览 pdf 文件而不是下载,所以我需要添加specialProfile.SetPreference("pdfjs.disabled", true);.

除此之外,您的代码对我来说非常完美。(注意我使用的是 Directory.GetCurrentDirectory() 而不是你的 Setup.DownloadContractPath)。尝试使用sample.pdf并检查首选项是否真的在您的 webdriver 打开的 Firefox 的 about:config 页面中。

这是一篇更详细的文章:使用 Selenium WebDriver 在 Firefox 中自动下载 PDF 文件

FirefoxProfile specialProfile = new FirefoxProfile();
specialProfile.SetPreference("browser.helperApps.alwaysAsk.force", false);
specialProfile.SetPreference("browser.download.manager.showWhenStarting", false);
specialProfile.SetPreference("browser.download.folderList", 2);
specialProfile.SetPreference("browser.download.dir", Directory.GetCurrentDirectory()); // my downloading dir
specialProfile.SetPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
specialProfile.SetPreference("browser.download.useDownloadDir", true);
specialProfile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");

specialProfile.SetPreference("pdfjs.disabled", true); // for my Firefox 20.0
return new FirefoxDriver(specialProfile);
于 2013-04-11T22:10:30.027 回答
0

您现在应该传递选项:

Dim fxOpt As New FirefoxOptions()

fxOpt.Profile.SetPreference("browser.helperApps.alwaysAsk.force", False)
fxOpt.Profile.SetPreference("browser.download.manager.showWhenStarting", False)
fxOpt.Profile.SetPreference("browser.download.folderList", 2)
fxOpt.Profile.SetPreference("browser.download.dir", Directory.GetCurrentDirectory()); // my downloading dir
fxOpt.Profile.SetPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", False)
fxOpt.Profile.SetPreference("browser.download.useDownloadDir", True)
fxOpt.Profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
fxOpt.Profile.SetPreference("pdfjs.disabled", True)

WebDrv = New Firefox.FirefoxDriver(fxOpt)
于 2018-04-04T08:24:28.517 回答