用capybara或selenium读取excel文件

时间:2014-07-10 13:56:14

标签: selenium rspec selenium-webdriver capybara

我正在测试一个您可以回复调查的应用程序。然后将调查结果输入excel文件,然后调查管理员可以下载此文件并查看结果。我希望能够自动化测试。

我可以回复调查并下载文件没问题。但是有没有办法我可以打开下载的文件并阅读并验证它的内容?目前使用rspec / capybara进行测试,所以我想找到一个使用这些的解决方案,或者我可以下降到硒水平?

任何帮助都会很棒!

1 个答案:

答案 0 :(得分: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();