2014-07-10 45 views
-1

我正在測試一個應用程序,您可以對調查作出迴應。然後將調查結果輸入Excel文件,然後調查管理員可以下載此文件並查看結果。我希望能夠自動測試這個。用水豚或硒讀取excel文件

我可以迴應調查和下載文件沒有問題。但是,有沒有辦法可以打開下載的文件並閱讀並驗證其內容?目前在我們的測試中使用rspec/capybara,所以我想找到一個解決方案,使用這些或者我可以下降到硒水平?

任何幫助將是偉大的!

+0

是的,你可以用java來做到這一點。您需要使用文件夾選項找到下載的文件。並且您可以在獲取其名稱後讀取該文件。 –

+1

硒只能填寫調查表。在那之後,它已經脫離了Selenium的控制,因爲Selenium所做的就是「自動瀏覽器」。你必須找到一個Ruby的Excel庫來讀取文件。 – sircapsalot

回答

0

首先,你需要獲得下載的文件名,你可以使用下面的代碼(JAVA):

做進口這些文件:

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 

File folder = new File(download_path); 

    File[] listOfFilesBeforeDownload = folder.listFiles(); 
    for(File x: listOfFilesBeforeDownload){ 
     System.out.println("Files before download:"+x); 

     } 

//Download the file now 

    File[] listOfFilesAfterDownload = folder.listFiles(); 

    for(File x: listOfFilesAfterDownload){ 
     String xx=x.toString(); 
     if(xx.contains(".crdownload")){ 

     } 

    } 

    listOfFilesAfterDownload = folder.listFiles(); 
    for(File x: listOfFilesAfterDownload){ 
     System.out.println("Files after download:"+x); 

     } 

    boolean contains = false;  
    List<String> results = new ArrayList<String>(); 
    for(int m=0; m<listOfFilesAfterDownload.length; m++) { 

     for(int n=0; n<listOfFilesBeforeDownload.length; n++) { 


      String afterFileName=listOfFilesAfterDownload[m].getName(); 
      String beforeFileName=listOfFilesBeforeDownload[n].getName(); 
      if(afterFileName.equals(beforeFileName)) { 

       contains = true; 
       break; 
      } 
     } 
     if(!contains) { 
     filename=listOfFilesAfterDownload[m].getName(); 
      results.add(filename); 

     } 
     else{ 
      //System.out.println(" contains = false"); 
      contains = false; 
     }   
    }   
    System.out.println(results); 
    } 
    catch (NoSuchElementException e){ 
     System.err.println(e); 
    } 

    System.out.println("filename : "+filename); 

獲取文件名後,可以將其內容解從文件中。這樣的事情,

  FileInputStream fis = new FileInputStream(download+fname+""); 
      // POIFSFileSystem fileSystem = new POIFSFileSystem(fis); 


      org.apache.poi.xwpf.extractor.XWPFWordExtractor oleTextExtractor 
= new XWPFWordExtractor(new XWPFDocument(fis)); 
      String content=oleTextExtractor.getText(); 
+0

原始海報有一件事沒有提及:水豚是紅寶石。您的代碼無論如何都是正確的,可能對OP沒有用處。 – SiKing

+0

嘿夥計們 - 感謝您的回覆。是的,應該提到Caypbara是紅寶石,但不適合用上面的java例子來尋找方法。 – user1523236