自定义浏览器首选项以下载PDF文件的文件

时间:2013-04-11 10:45:14

标签: c# selenium webdriver selenium-webdriver

我正在尝试使用我在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 即使我使用上面的代码,我也得到了以下屏幕:

enter image description here

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

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

除此之外,您的代码对我来说也很完美。 (注意我使用了Directory.GetCurrentDirectory()而不是Setup.DownloadContractPath)。尝试使用sample.pdf并检查首选项是否实际位于:webdriver的配置页面打开Firefox。

以下是更详细的文章:Download PDF files automatically in Firefox using Selenium WebDriver

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);

答案 1 :(得分: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)