2016-04-01 76 views
2

我想從Firefox和Webdriver下載Excel文件,但我無法處理下載彈出窗口。如何處理下載彈出在Firefox中,而下載Excel使用硒Webdriver

當點擊按鈕,我需要文件自動下載,而不顯示彈出。

這裏是我的代碼:

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; 

但是,上面的代碼是行不通的。任何人都可以幫忙嗎?

回答

5

首先,你需要獲得對應於文件的MIME類型:

  • 開放開發工具,然後在網絡選項卡
  • 返回到頁面,點擊要下載的文件
  • 圍棋回到網絡面板,並選擇所述第一請求
  • 複印上的內容類型從響應報頭中的右側的mime類型:

enter image description here

  • 設置偏好 「browser.helperApps.neverAsk.saveToDisk」 與您的MIME類型
  • 確保下載文件夾 「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(); 
+0

謝謝弗洛朗。它對Excel工作正常,但對於PDF不起作用。你能幫我解決這個問題嗎?提前致謝。 – vsreekanth

+0

您可以在「browser.helperApps.neverAsk.saveToDisk」中添加多個MIME類型。分隔符是逗號。 –

+0

謝謝,當我設置「pdfjs.disabled」標誌時,我纔開始工作。它在許多其他答案/博客文章中都沒有。 – kamituel

1
  FirefoxProfile profile = new FirefoxProfile(); 
      // profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", " text/plain, application/octet-stream doc xls pdf txt"); 
      profile.SetPreference("browser.download.manager.alertOnEXEOpen", false); 
      profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/csv, text/csv, text/plain,application/octet-stream doc xls pdf txt"); 
      profile.SetPreference("browser.download.manager.focusWhenStarting", false); 
      profile.SetPreference("browser.download.useDownloadDir", true); 
      profile.SetPreference("browser.helperApps.alwaysAsk.force", false); 
      profile.SetPreference("browser.download.manager.closeWhenDone", true); 
      profile.SetPreference("browser.download.manager.showAlertOnComplete", false); 
      profile.SetPreference("browser.download.manager.useWindow", false); 
      profile.SetPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false); 
      profile.SetPreference("pdfjs.disabled", true); 
      _driverInstance = new FirefoxDriver(profile); 

這些SETT我爲我工作。希望它可以幫助你。

相關問題