提问者:小点点

读取表单Excel文件时在selenium中获取空指针异常,无法找到解决方法


我是新来的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))

但是得到错误,因为它不能从对象转换为布尔值;尝试将其类型化为布尔值,但也不起作用。

有没有别的方法或者更好的写法


共1个答案

匿名用户

你提议更换生产线

if(row.getCell(0).toString().length()==0){  

与线

if(row.getCell(0)==null?"":row.getCell(0)) {

但这不起作用,因为表达式row. getCell(0)==null?"":row.getCell(0)没有布尔值。它有值"Stringrow.getCell(0),我假设它返回Object

如果row. getCell(0)为空字符串或null,似乎您希望运行if块的内容。如果是这种情况,那么最简单的事情就是编写

if(row.getCell(0) == null || row.getCell(0).toString().length()==0){