我正在使用selenium、testNG和Apache POI创建一个测试框架。到目前为止,我已经创建了一段代码,它将从电子表格中获取每一行并将其插入到测试中。但是,在添加新行时,它会简单地忽略添加的行。任何帮助都是非常感谢的。
获取输入的代码:
@DataProvider(name="ExcelData")
public Object[][] passData() {
ExcelDataConfig config = new ExcelDataConfig("C:\\Users\\dindo\\Documents\\tests\\d2c-lv-int-01_DATA.xlsx");
int rows = config.getRowCount(0);
int frows = rows-2;
Object[][] data = new Object[frows][11];
for(int i=2;i<rows;i++)
{
data[i-2][0]=config.getStrData(0, i, 0);
data[i-2][1]=config.getIntData(0, i, 1);
data[i-2][2]=config.getIntData(0, i, 2);
data[i-2][3]=config.getStrData(0, i, 3);
data[i-2][4]=config.getStrData(0, i, 4);
data[i-2][5]=config.getStrData(0, i, 5);
data[i-2][6]=config.getIntData(0, i, 6);
data[i-2][7]=config.getIntData(0, i, 7);
data[i-2][8]=config.getIntData(0, i, 8);
data[i-2][9]=config.getStrData(0, i, 9);
data[i-2][10]=config.getStrData(0, i, 10);
}
return data;
}Excel工作表代码:
public ExcelDataConfig(String excelPath) {
try {
File src = new File(excelPath);
FileInputStream fis = new FileInputStream(src);
wb = new XSSFWorkbook(fis);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public String getStrData(int sheetNumber,int row, int col) {
Details = wb.getSheetAt(sheetNumber);
String strdata = Details.getRow(row).getCell(col).getStringCellValue();
return strdata;
}
public String getIntData(int sheetNumber,int row, int col) throws NullPointerException{
Details = wb.getSheetAt(sheetNumber);
double doubledata = Details.getRow(row).getCell(col).getNumericCellValue();
int intdata = (int) doubledata;
String strdata = Integer.toString(intdata);
return strdata;
}
public int getRowCount(int sheetIndex)
{
int row = wb.getSheetAt(sheetIndex).getLastRowNum();
return row;
}此外,有没有可能将getIntData和getStrData合并为一个函数,该函数会自动知道它是字符串还是整数。
在此之前,非常感谢您。
发布于 2018-08-11 07:18:56
经过大量的键盘敲击之后,我终于弄清楚了chink。原因很简单,当Apache POI将xlsx文件中的第一行设置为0时,数组中的行数就会减少1到更少。愚蠢的是,我意外地在最后一行下面多了一个字母保存了我的工作表,从而发现了这一点。
https://stackoverflow.com/questions/51786320
复制相似问题