2016-03-30 12 views
7

Chcę zweryfikować pobieranie pliku przy użyciu oprogramowania Web Selen i Java. Plik do pobrania jest w formacie pdf. Kiedy webdriver kliknie „Pobierz” ogniwo w AUT, firefox otworzyć okno z potwierdzeniem następujące pobieraniaUstaw profil Firefox, aby pobierać pliki automatycznie przy użyciu Selenium i Java

Download Confirmation Window

ja Firefox ma automatycznie pobierać pliki bez pokazywania powyżej oknie potwierdzenia, więc użyłem poniższy kod

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

ale nadal Firefox pokazuje to samo okno. Jak mogę ustawić profil firefox, aby pliki PDF były pobierane automatycznie bez pokazywania dialogu potwierdzającego?

+2

Jaki jest 'mime-type 'odpowiedzi? Spróbuj: 'firefoxProfile.setPreference (" browser.helperApps.neverAsk.saveToDisk "," application/pdf, application/x-pdf, application/octet-stream ");' – JRodDynamite

Odpowiedz

16

Tak jak sugerował @Jason, jest to prawdopodobnie kolejny typ mime. Aby uzyskać typ MIME:

  • Otwarte Narzędzia dla programistów
  • przejdź do Sieć
  • Kliknij na link, aby pobrać pdf
  • W panelu sieci wybrać pierwsze żądanie
  • Mim typ to Content-Type z nagłówka odpowiedzi:

enter image description here

Następnie pobrać plik PDF z Firefoksem:

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

Typ MIME to application/pdf. Widzę komunikat w konsoli karty programisty "Zasób zinterpretowany jako Dokument, ale przesłany z aplikacją typu MIME/pdf". Czy ta wiadomość ma jakikolwiek związek z tym problemem @Jason – stackoverflow

+0

Czy możesz podać publiczny link do pliku PDF, który powiela twój problem. Możesz go łatwo uzyskać, wyszukując "pdf filetype: pdf" w Google. –

+0

Możesz sprawdzić dowolny plik PDF w łączu [https://www.ibm.com/developerworks/community/files/app#/] – stackoverflow

1

Sposób obecnie działa w Firefoksie 57.0b13 jest

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

Szczegółowe informacje na temat każdego Firefox profile setting