2014-05-07 84 views
1

我是新來的硒,我被分配了一個任務來執行下面提到的場景。如何處理在selenium webdriver中下載文件?

場景:對於給定的URL,我需要輸入一個網頁,該網頁有多個鏈接。並且鏈接可能有pdf或HTML文件。 我需要通過單擊該鏈接下載文件,並通過在Excel表格中輸入鏈接參考進行管理。

所以我的任務有兩個挑戰:
1)如何處理XL表輸入的值作爲輸入。
2)如何利用硒

下載一個PDF文件,請幫我找到在任何地點,在那裏我可以下載一個文件

感謝

回答

0

1A)你應該嘗試了JExcelApi:http://jexcelapi.sourceforge.net/

1b)另一個想法是使用Apache POI。你可以找到例子:http://poi.apache.org/spreadsheet/how-to.html#sxssf

2)要下載PDF文件,你可以試試這個硒代碼(用Java編寫的):

FirefoxProfile profile = new FirefoxProfile(); 
WebDriver driver = new FirefoxDriver(profile); 

profile.setPreference("browser.helperapps.neverAsk.saveToDisk" , "application/octet-stream;application/pdf"); 
profile.setPreference("browser.helperApps.alwaysAsk.force", false); 
profile.setPreference("browser.download.manager.showWhenStarting",false); 
profile.setPreference("browser.download.folderList", 2); 
profile.setPreference("browser.download.dir","C:\\savedPDFs"); 

當你點擊一個鏈接(可有pdf文件),PDF格式文件將被自動下載到指定的文件夾中(不彈出)

0

試試下面的代碼

FirefoxProfile profile = new FirefoxProfile(); 
    String path = "D:\\Downloads_sel"; 
    profile.setPreference("browser.download.folderList", 2); 
    profile.setPreference("browser.download.dir", path); 
    profile.setPreference("browser.download.alertOnEXEOpen", false); 
    profile.setPreference("browser.helperApps.neverAsksaveToDisk", "application/x-msexcel,application/excel,application/x-excel,application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel"); 
    profile.setPreference("browser.download.manager.showWhenStarting", false); 
    profile.setPreference("browser.download.manager.focusWhenStarting", false); 
    profile.setPreference("browser.helperApps.alwaysAsk.force", false); 
    profile.setPreference("browser.download.manager.alertOnEXEOpen", false); 
    profile.setPreference("browser.download.manager.closeWhenDone", false); 
    profile.setPreference("browser.download.manager.showAlertOnComplete", 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); 
    profile.setPreference("pdfjs.disabled", true); 

    WebDriver driver = new FirefoxDriver(profile); 

有關完整的MIME類型列表按照鏈接:http://qaautomationworld.blogspot.in/2014/02/file-downlaoding-using-selenium.html

+0

好的答案,除了有一個錯字 - 第四個參數應該是browser.helperApps.neverAsk.saveToDisk –

0

這個問題前幾次一直問我卻用MetaModel Apache api用於讀取和寫入到Excel。它允許我使用SQL語法來查詢Excel。如果你能找到它,我在我的GitHub帳戶中做了一個這樣的示例項目。

此外,用於下載使用Selenium測試文件,我只是這樣做:

1. Use selenium to get the file download hyperlink. 
    2. Use Apache HttpUtils to download the file. Don't use the browser to do it. 
1

的Apache POI。 http://www.toolsqa.com/selenium-webdriver/data-driven-testing-excel-poi/

如果您正在使用Firefox

使用Firefox配置文件來下載你的文件。此配置文件跳過Firefox的對話框。 在行: -

pro.setPreference("browser.downLoad.folderList", 0); 

browser.download.folderList的值可以設置爲0,1,或2設置爲0時,Firefox會保存通過瀏覽器下載的用戶桌面上的所有文件。設置爲1時,這些下載將存儲在Downloads文件夾中。設置爲2時,再次使用爲最近下載指定的位置。

,你需要實現Firefox的配置代碼: -

 FirefoxProfile pro=new FirefoxProfile(); 
     pro.setPreference("browser.downLoad.folderList", 0); 
     pro.setPreference("browser.helperApps.neverAsk.saveToDisk", "Applications/zip"); 
     WebDriver driver=new FirefoxDriver(pro); 
     driver.get("http://selenium-release.storage.googleapis.com/2.47/selenium-java-2.47.1.zip"); 

希望它會幫助你:)

0

經過一番實地調查,如何下載在Firefox中的PDF文件沒有任何另存爲彈出式,我發現在Firefox的配置文件中的最低要求的偏好:

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

cource你可以一些額外的偏好。 它適用於Firefox 45-46版本。

相關問題