Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用testNG读取selenium中的excel数据_Java_Excel_Selenium_Selenium Webdriver_Apache Poi - Fatal编程技术网

Java 使用testNG读取selenium中的excel数据

Java 使用testNG读取selenium中的excel数据,java,excel,selenium,selenium-webdriver,apache-poi,Java,Excel,Selenium,Selenium Webdriver,Apache Poi,我刚接触硒,还在学习。我正在尝试用TestNG编写一个程序,其中包含两个测试,分别用于从excel读取数据和使用ApachePOI进行编写。我有一个XLS和一个XLSX文件在同一个文件夹中,并试图使用这两个文件。我希望在testng.xml中配置excels的路径和名称。当我执行第一个读取数据的测试时,工作表名称被读取为xml。下面是我的testng.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTE

我刚接触硒,还在学习。我正在尝试用TestNG编写一个程序,其中包含两个测试,分别用于从excel读取数据和使用ApachePOI进行编写。我有一个XLS和一个XLSX文件在同一个文件夹中,并试图使用这两个文件。我希望在testng.xml中配置excels的路径和名称。当我执行第一个读取数据的测试时,工作表名称被读取为xml。下面是我的testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
<parameter name="filePath" value="C:\\Technologies\\Selenium\\WebDriver\\DataFiles\\ExcelFiles"></parameter>
  <test name="Xlsx">
  <parameter name="fileName" value="12142015_sx.xlsx"></parameter>
  <parameter name="sheetName" value="xlsx_1"></parameter>
    <classes>
      <class name="handlefiles.handleExcel"/>
    </classes>
  </test>
  <test name="Xls">
  <parameter name="fileName" value="12142015_s.xls"></parameter>
  <parameter name="sheetName" value="xls_1"></parameter>
    <classes>
      <class name="handlefiles.handleExcel"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

下面是java类代码

package handlefiles;

import java.io.*;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.annotations.*;

public class handleExcel {

    @BeforeTest
    @Parameters({"filePath", "fileName", "sheetName"})
    public void readExcel(String filePath, String fileName, String sheetName) throws IOException{
        // set the file path
        File eFile = new File(filePath+"\\"+fileName);
        //print the file path
        System.out.println("File is at: "+eFile);

        FileInputStream inputstream = new FileInputStream(eFile);
        Workbook wb = null;

        // Read and publish extension
        String extensionName = fileName.substring(fileName.indexOf("."));
        System.out.println("File type is: "+extensionName);

        //Read the file
        if(extensionName.equalsIgnoreCase(".xlsx")){
            wb = new XSSFWorkbook(inputstream);
        }else if(extensionName.equalsIgnoreCase(".xls")){
            wb = new HSSFWorkbook(inputstream);
        }
        //Read the sheet name
        Sheet wbSheet = wb.getSheet(sheetName);
        System.out.println("Sheet Name is: "+wbSheet);

    }

  @Test(priority=1)
  public void readData(Sheet wbSheet) {

    // Get the row count
            int rowCount = wbSheet.getLastRowNum() - wbSheet.getFirstRowNum();

            // print data from excel
            for (int i=0; i<rowCount-1; i++){
                Row row = wbSheet.getRow(i);
                for (int j=0; j<row.getLastCellNum(); j++){
                    System.out.println(row.getCell(j).getStringCellValue()+"||");
                }
            }
  }
}
包装手文件;
导入java.io.*;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.Sheet;
导入org.apache.poi.ss.usermodel.工作簿;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.testng.annotations.*;
公共类handleExcel{
@试验前
@参数({“文件路径”、“文件名”、“图纸名”})
public void readExcel(字符串文件路径、字符串文件名、字符串表名)引发IOException{
//设置文件路径
File eFile=新文件(filePath+“\\\”+文件名);
//打印文件路径
System.out.println(“文件位于:”+eFile);
FileInputStream inputstream=新的FileInputStream(eFile);
工作簿wb=null;
//读取和发布扩展
字符串扩展名=fileName.substring(fileName.indexOf(“.”);
System.out.println(“文件类型为:“+extensionName”);
//读文件
if(extensionName.equalsIgnoreCase(“.xlsx”)){
wb=新XSSF工作簿(inputstream);
}else if(extensionName.equalsIgnoreCase(“.xls”)){
wb=新的HSSF工作手册(输入流);
}
//阅读图纸名称
Sheet wbSheet=wb.getSheet(sheetName);
System.out.println(“图纸名称为:+wbSheet”);
}
@测试(优先级=1)
公共无效读取数据(工作表wbSheet){
//获取行计数
int rowCount=wbSheet.getLastRowNum()-wbSheet.getFirstRowNum();
//从excel打印数据

对于(int i=0;i删除以下IF条件和

if(extensionName.equalsIgnoreCase(".xlsx")){
            wb = new XSSFWorkbook(inputstream);
        }else if(extensionName.equalsIgnoreCase(".xls")){
            wb = new HSSFWorkbook(inputstream);
        }
添加这段代码

 wb = new XSSFWorkbook(inputstream);

我过去使用过,但我从未告诉过我使用的扩展名。

根据堆栈跟踪,POI认为您试图使用POI的XLS代码(不是XLSX代码)打开XLSX文件。可能该文件的扩展名是“.XLS”,但应该是“.XLSX”,或者该文件已损坏,等等(或者您发现了错误)

我建议改用POI:

用于创建适当类型工作簿的工厂(如有) 或),通过从提供的 输入


是否确定.xls文件包含2007年以前的excel内容?以下是“属性-Microsoft excel 97-2003工作表(.xls)”中的文件类型我尝试了此操作。异常已更改,但工作表名称仍被读取为XML。下面是testNG跟踪-org.testNG.TestNGException:Method readData需要1个参数,但@Test annotation中提供了0。控制台显示如下。工作表名称为:name:/xl/worksheets/sheet1.XML-内容类型:application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml工作表名称为:Name:/xl/worksheets/sheet1.xml-内容类型:application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml@Naresh,我知道你已经接受了这个答案,但你的评论让我觉得这并没有回答你的问题。你是不是碰巧接受了错误的答案?谢谢。@mfulto谢谢你的注意。这可能是意外发生的,不是故意的。我已经纠正了。
 wb = new XSSFWorkbook(inputstream);