2013-04-11 85 views
0

我正嘗試使用我在其他主題的Stackoverflow上找到的代碼,以便不要詢問用戶應該採取的下載PDF文件的操作。我使用的爲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

有誰知道我可以做的不對?

+0

如果你是Windows系統,另一種解決方案是使用的SendKeys並以單擊OK按鈕 – 2013-04-11 15:05:03

+0

爾加,爲什麼打標籤,標籤和你還是在下載東西?你真的在做什麼嗎? – Ardesco 2013-04-12 14:57:06

+0

嗨,實際上應用程序中有另一個進程已完成下載文件已開始。這就是爲什麼我需要得到它。 – ravenik 2013-04-23 06:49:22

回答

2

您使用的是Firefox和Selenium版本?

我使用Firefox 20.0,默認行爲是預覽PDF文件而不是下載,所以我需要添加specialProfile.SetPreference("pdfjs.disabled", true);

除此之外,您的代碼適合我。 (注意我使用Directory.GetCurrentDirectory()而不是您的Setup.DownloadContractPath)。用sample.pdf試一試,並檢查首選項是否確實在about:你的webdriver的config頁面打開了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); 
+0

哇!大!它工作:) :)謝謝 – ravenik 2013-04-12 07:46:28

+0

很高興知道這一點。那麼你知道你的代碼不工作的原因嗎? – 2013-04-12 10:13:57

+0

嗨,缺少的部分是:specialProfile.SetPreference(「pdfjs.disabled」,true);但我仍然不知道這部分是做什麼?想法? – ravenik 2013-04-23 06:51:27