我正在使用Selenium,testNG和Apache POI创建一个测试框架。到目前为止,我已经创建了一段代码,该代码将从电子表格中获取每一行并将其插入测试中。但是,添加新行时,它只会忽略添加的行。任何帮助将不胜感激。
获取输入的代码:
CREATE TABLE `test` (
`num__student` int(11) unsigned NOT NULL,
`year_study` date DEFAULT NULL,
`num_item` int(11) DEFAULT NULL,
`class` varchar(15) DEFAULT NULL,
`date_day` date DEFAULT NULL,
`attendee` enum('0','1') NOT NULL DEFAULT '0',
`excusable` enum('0','1') NOT NULL DEFAULT '0',
`note` text,
PRIMARY KEY (`num__student`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `student_academia` (
`num__student` int(11) unsigned NOT NULL,
`name_student` varchar(100) DEFAULT NULL,
PRIMARY KEY (`num__student`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Excel工作表的代码:
@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;
}
还可以将getIntData和getStrData合并为一个函数,该函数自动知道它是字符串还是整数。
非常感谢。
答案 0 :(得分:0)
经过大量的键盘敲打之后,我终于解决了这个问题。仅仅是因为Apache POI将xlsx文件中的第一行作为0,所以数组中的行就减少了1。足够愚蠢的是,我意外地将工作表保存在表格的最后一行下面,并在其中加上了一个额外的字母。