我是新来的selenium,我写了一个关键字驱动的框架,它从一个excel文件中读取,根据存在的值,它执行操作。所以在读取文件时,在特定的行中,如果第一个单元格包含值,它是一个测试用例名称,否则它是一个关键字。
现在,当它读取第一个没有任何值的单元格时,它会为该行抛出java. lang.NullPointerException。
以下是我的代码部分:
Sheet sheet = file.ReadExcelFile("E:\\workspace\\Practice1", "Keywords.xlsx", "Sheet1");
int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();
for (int i = 1; i < rowCount+1; i++) {
Row row = sheet.getRow(i);
//Below line gives me null pointer error
if(row.getCell(0).toString().length()==0){
System.out.println(row.getCell(1).toString()+"----"+ row.getCell(2).toString()+"----"+
row.getCell(3).toString()+"----"+ row.getCell(4).toString());
//Call perform function to perform operation on UI
operation.perform(allObjects, row.getCell(1).toString(), row.getCell(2).toString(),
row.getCell(3).toString(), row.getCell(4).toString());
}
else{
//Print the new testcase name when it started
System.out.println("New Testcase->"+row.getCell(0).toString() +" Started");
}
}
我试图解决使用三元(?)运算符如下:if(row. getCell(0)==null?"":row.getCell(0))
但是得到错误,因为它不能从对象转换为布尔值;尝试将其类型化为布尔值,但也不起作用。
有没有别的方法或者更好的写法
你提议更换生产线
if(row.getCell(0).toString().length()==0){
与线
if(row.getCell(0)==null?"":row.getCell(0)) {
但这不起作用,因为表达式row. getCell(0)==null?"":row.getCell(0)
没有布尔值。它有值
"
、String
或row.getCell(0)
,我假设它返回Object
。
如果row. getCell(0)
为空字符串或null
,似乎您希望运行if
块的内容。如果是这种情况,那么最简单的事情就是编写
if(row.getCell(0) == null || row.getCell(0).toString().length()==0){