java.lang.IllegalStateException:无法从selenium webdriver中的NUMERIC单元格获取STRING值

时间:2018-02-13 17:28:13

标签: selenium-webdriver

//我在一个班级中有这个方法

public class cls1 {
public void enterZip1(String zip1Value){
driver.findElement(zip1).sendKeys(zip1Value);
   }
}

//我在另一个课程中有以下片段。

public class cls2{

    Cell zip1Col = row.getCell(zip1ColNo);
    String zip1Value = zip1Col.getStringCellValue();
    cls1.enterZip1(zip1Value);

}

当我使用Eclipse运行我的selenium webdriver脚本时,我收到此错误:

java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
    at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:1077)
    at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:395)
    at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:347)
    at com.carem.ss.dd(ss.java:215)
    ..........

错误指向:

String zip1Value = zip1Col.getStringCellValue();

数据来自excel文件。我在excel文件中有zip1列。 Zip1单元格只有数值。我知道导致错误的原因,但我无法修复它。 Excel单元格具有数值,但我声明了一个字符串变量。我试图改变

String zip1Value = zip1Col.getStringCellValue();

String zip1Value = zip1Col.getNumericCellValue();

然后我迷路了,因为eclipse建议进行其他改动,包括上述方法。 Excel将始终具有数值。如何修改我的代码以便它接受数值?

更新

enter image description here

2 个答案:

答案 0 :(得分:0)

参考您的评论,并根据您提供给我的屏幕截图,错误明确指出该值是双倍的。 Double是一种数值。我最初错误地认为该值是一个整数(数字),这就是为什么我的第一个建议不起作用,但以下应该有效:

String zip1Value = Double.toString(zip1Col.getNumericCellValue());

答案 1 :(得分:0)

导入此:

import org.apache.poi.ss.util.NumberToTextConverter;

补充说:

String zip1Value = NumberToTextConverter.toText(zip1Col.getNumericCellValue());

有效。