2016-06-08 102 views
1

我有一個測試上傳,壓縮和下載PDF文件。除了下載部分外,一切工作正常。當我們點擊下載時,我無法得到如何處理Firefox中的確認彈出菜單/保存或打開文件對話框。我嘗試修改Firefox配置,但仍然無法解決它。任何人都可以幫忙嗎?在Firefox中處理下載確認彈出/對話框

FirefoxProfile profile = new FirefoxProfile(); 
     profile.setPreference("browser.download.folderList", 2); 
     profile.setPreference("browser.download.manager.showWhenStarting", false); 
     profile.setPreference("browser.download.dir", "C:\\Users\\Sahil\\Downloads\\"); 
     profile.setPreference("browser.helperApps.neverAsk.openFile","application/pdf"); 
     profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf"); 
     profile.setPreference("browser.helperApps.alwaysAsk.force", false); 
     profile.setPreference("browser.download.manager.alertOnEXEOpen", false); 
     profile.setPreference("browser.download.manager.focusWhenStarting", false); 
     profile.setPreference("browser.download.manager.useWindow", false); 
     profile.setPreference("browser.download.manager.showAlertOnComplete", false); 
     profile.setPreference("browser.download.manager.closeWhenDone", false); 

     profile.setPreference("browser.download.manager.useWindow", false); 
     profile.setPreference("browser.download.manager.showWhenStarting", false); 
     profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false); 
     , 0 profile.setPreference("pdfjs.disabled", true); 
    WebDriver driver=new FirefoxDriver(profile); 
    driver.get("http://www.ilovepdf.com/compress_pdf"); 
    driver.findElement(By.id("pickfiles")).click(); 
    Runtime.getRuntime().exec("C:\\Users\\Sahil\\Documents\\Au\\Second.exe"); 
    WebDriverWait wait=new WebDriverWait(driver, 100); 
    WebElement element1=wait.until(ExpectedConditions.elementToBeClickable(By.id("uploadfiles"))); 
    element1.click(); 

    WebElement element=wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a#download"))); 
    element.click(); 
+1

爲什麼你使用browser.helperApps.neverAsk.openFile和browser.helperApps.neverAsk.saveToDisk?嘗試刪除'openFile'首選項 – Andersson

+0

我使用兩個作爲Firefox提供2選項:保存文件或打開.. 試圖通過刪除openFile但沒有幫助.. –

回答

6

您有許多您不需要的偏好。所有你需要的是這樣的:

// Create a firefoxprofile for firefox specific settings 
FirefoxProfile profile = new FirefoxProfile(); 

// Set the downloads folder 
profile.setPreference("browser.download.dir", path/to/folder); 

// Download files to the downloads folder 
profile.setPreference("browser.download.folderList", 2); 

// Don't show downloads window when download starts 
profile.setPreference("browser.download.manager.showWhenStarting", False); 

// Prevent file download dialog to be shown for certain MIME-types 
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); 

如果這不起作用,你應該確保你有指定的正確的MIME類型。您可以在瀏覽器中監控網絡並手動下載文件。 GET請求應該使用特定的內容類型進行。確保內容類型已被添加到您的首選項browser.helperApps.neverAsk.saveToDisk

編輯! 我剛剛檢查了您指定的網站的MIME類型。您正在嘗試自動保存application/pdf。但是,您正在使用MIME類型application/octet-stream下載文件。 您需要更改此:

profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); 

要這樣:

profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream"); 

如何找到MIME類型

你點擊下載按鈕打開Firefox的控制檯,轉到前網絡選項卡。 Firefox network tab

現在,如果您點擊下載按鈕,您將看到一個GET請求。如果你打開這個請求,你可以看到響應的內容類型。這是你的MIME類型。 MIME-type

+0

很多謝謝,它的工作.. 只是一件事,你可以請指導我在哪裏得到這些MIME信息..我不知道這些東西 –

+0

@SahilSehgal我已經添加了一些解釋如何找到它。 – RemcoW

+0

非常感謝Remco .. –