2016-03-30 6 views
7

Ich möchte den Dateidownload mit Selenium-Webdriver und Java überprüfen. Die Datei zum Herunterladen ist im PDF-Format. Wenn WebDriver klickt auf ‚Download‘ Link in der AUT, öffnen firefox den folgenden Download-Bestätigungsfenster aufLegen Sie das Firefox-Profil so fest, dass Dateien automatisch mit Selenium und Java heruntergeladen werden.

Download Confirmation Window

ich firefox wollen Datei automatisch herunterzuladen, ohne über Bestätigungsfenster zeigt, so habe ich den Code unten

FirefoxProfile firefoxProfile=new FirefoxProfile(); 
firefoxProfile.setPreference("browser.download.folderList",2); 
firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false); 
firefoxProfile.setPreference("browser.download.dir",downloadPath); 
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf"); 
WebDriver driver=new FirefoxDriver(firefoxProfile); 

aber immer noch Firefox zeigt das gleiche Fenster. Wie kann ich ein Firefox-Profil einstellen, so dass PDF-Dateien automatisch heruntergeladen werden, ohne den Bestätigungsdialog anzuzeigen?

+2

Was die 'Mime-Typ ist 'der Antwort? Probieren Sie es aus: 'firefoxProfile.setPreference (" browser.helperApps.neverAsk.saveToDisk "," application/pdf, application/x-pdf, application/octet-stream ");' – JRodDynamite

Antwort

16

Genau wie @Jason vorgeschlagen hat, ist es höchstwahrscheinlich ein anderer Mime-Typ. Um den MIME-Typ zu erhalten:

  • öffnen Developer Tools
  • Go
  • Klicken Sie auf den Link zum Netzwerk der pdf
  • Im Netzwerk-Panel, wählen Sie die erste Anfrage
  • Der Mime zum Download Typ ist der Content-Type aus den Antwort-Header:

enter image description here

Dann ein PDF mit Firefox zum Download:

FirefoxOptions options = new FirefoxOptions(); 
options.setPreference("browser.download.folderList", 2); 
options.setPreference("browser.download.dir", "C:\\Windows\\temp"); 
options.setPreference("browser.download.useDownloadDir", true); 
options.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); 
options.setPreference("pdfjs.disabled", true); // disable the built-in PDF viewer 

WebDriver driver = new FirefoxDriver(options); 
driver.get("https://www.mozilla.org/en-US/foundation/documents"); 
driver.findElement(By.linkText("IRS Form 872-C")).click(); 
+0

Der Mime-Typ ist application/pdf. Ich kann eine Nachricht in der Entwicklerregisterkarte "Ressource als Dokument interpretiert, aber übertragen mit MIME-Typ application/pdf" sehen. Hat diese Nachricht eine Beziehung zum Problem? @Jason – stackoverflow

+0

Können Sie einen öffentlichen PDF-Link bereitstellen, der Ihr Problem reproduziert? Sie können einen einfach erhalten, indem Sie in Google nach "pdf filetype: pdf" suchen. –

+0

Sie können für eine PDF-Datei in den Link [https://www.ibm.com/developerworks/community/files/app#/] – stackoverflow

1

So funktioniert es zur Zeit in Firefox 57.0b13 ist

FirefoxProfile profile = new FirefoxProfile(); 
// profile.setPreference("browser.download.useDownloadDir", true); This is true by default. Add it if it's not working without it. 

profile.setPreference("browser.download.folderList",2); //Use for the default download directory the last folder specified for a download 
profile.setPreference("browser.download.dir", "/Path/to/directory"); //Set the last directory used for saving a file from the "What should (browser) do with this file?" dialog. 
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); //list of MIME types to save to disk without asking what to use to open the file 
profile.setPreference("pdfjs.disabled", true); // disable the built-in PDF viewer 

firefoxOptions.setProfile(profile); 

Detaillierte Informationen zu den einzelnen Firefox profile setting

Verwandte Themen