1

Ich habe einen Test zum Hochladen, Komprimieren und Herunterladen von PDF-Dateien. Alles funktioniert gut außer dem Download-Teil. Ich bin nicht in der Lage zu bekommen, wie man das Bestätigungs-Popup/Speichern oder Öffnen-Datei-Dialog in Firefox behandelt, wenn wir auf Download klicken. Ich habe versucht, Firefox-Konfiguration zu ändern, aber immer noch nicht in der Lage, es zu lösen. Kann mir bitte jemand helfen?Handle Download Bestätigung Popup/Dialog in 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

Warum verwenden Sie '" browser.helperApps.neverAsk.openFile "' zusammen mit '" browser.helperApps.neverAsk.saveToDisk "'? versuche, 'openFile' Präferenz zu entfernen – Andersson

+0

ich benutze beide als firefox Angebote 2 Optionen: Datei speichern oder Öffnen mit .. Versucht, durch Entfernen von openFile, aber hat nicht geholfen .. –

Antwort

6

Sie haben viele Einstellungen, die Sie nicht benötigen. Alles, was Sie brauchen, ist dies:

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

Wenn dies nicht funktioniert, sollten Sie sicherstellen, dass Sie den richtigen MIME-Typ angegeben haben. Sie können das Netzwerk in Ihrem Browser überwachen und die Datei manuell herunterladen. Eine GET-Anforderung sollte mit einem bestimmten Inhaltstyp erfolgen. Stellen Sie sicher, dass der Inhaltstyp Ihrer Präferenz browser.helperApps.neverAsk.saveToDisk hinzugefügt wurde.

Bearbeiten! Ich habe gerade den MIME-Typ für die von Ihnen angegebene Website überprüft. Sie versuchen, eine application/pdf automatisch zu speichern. Sie laden jedoch eine Datei mit dem MIME-Typ application/octet-stream herunter. Sie müssen dies ändern:

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

Um dies:

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

Wie den MIME-Typ

finden, bevor Sie den Download getroffen, um Ihre Firefox-Konsole öffnen und gehen Sie zu die Registerkarte Netzwerk. Firefox network tab

Jetzt, wenn Sie den Download-Knopf drücken, sehen Sie eine GET-Anfrage wurde gemacht. Wenn Sie diese Anfrage öffnen, können Sie den Inhaltstyp der Antwort sehen. Das ist dein MIME-Typ. MIME-type

+0

Vielen Dank, es hat funktioniert .. Nur eine Sache, Kannst du mir bitte zeigen, wo ich diese MIME-Informationen bekomme? Ich bin mir dieser Dinge nicht so bewusst –

+0

@SahilSehgal Ich habe eine Erklärung hinzugefügt, wie ich sie finden kann. – RemcoW

+0

Vielen Dank Remco .. –