返回
Selenium WebDriver从Excel电子表格中读取数据:如何解决“无法从数字单元格中获取文本值”错误?
java
2024-03-19 18:16:59
从 Excel 电子表格中读取文本数据
简介
在使用 Selenium WebDriver 从 Excel 电子表格中读取数据时,我们可能会遇到一个棘手的错误:“无法从数字单元格中获取文本值”。此错误表明我们尝试从格式化为数字的单元格中获取文本数据。本文将探讨此错误的原因并提供一种可靠的解决方案。
错误原因
当单元格格式化为数字时,Selenium 无法将单元格值转换为字符串。因此,当我们尝试从该单元格获取文本值时,它会引发错误。
解决方案
要解决此错误,我们需要在获取单元格值之前将单元格类型转换为字符串。使用 Java,我们可以使用以下代码:
cell.setCellType(Cell.CELL_TYPE_STRING);
String value = cell.getStringCellValue();
代码修改
在你的代码中,将以下行添加到循环中:
sheet.getRow(i).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
示例
考虑以下 Java 代码,它使用 Selenium WebDriver 从 Excel 电子表格中读取文本数据:
WebElement searchbox = driver.findElement(By.name("j_username"));
WebElement searchbox2 = driver.findElement(By.name("j_password"));
try {
FileInputStream file = new FileInputStream(new File("C:\\paulo.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet sheet = workbook.getSheetAt(0);
for (int i=1; i <= sheet.getLastRowNum(); i++){
sheet.getRow(i).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
String j_username = sheet.getRow(i).getCell(0).getStringCellValue();
String j_password = sheet.getRow(i).getCell(0).getStringCellValue();
searchbox.sendKeys(j_username);
searchbox2.sendKeys(j_password);
searchbox.submit();
driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
}
workbook.close();
file.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
现在,你的代码应该能够正确地从 Excel 电子表格中读取文本数据。
结论
通过遵循本文中概述的步骤,你可以轻松解决“无法从数字单元格中获取文本值”的错误,并从 Excel 电子表格中成功读取文本数据。
常见问题解答
-
为什么我收到“无法从数字单元格中获取文本值”的错误?
- 因为 Selenium 无法将格式化为数字的单元格值转换为字符串。
-
如何解决此错误?
- 在获取单元格值之前将单元格类型转换为字符串。
-
需要在代码中进行哪些具体更改?
- 将
cell.setCellType(Cell.CELL_TYPE_STRING);
添加到你的循环中。
- 将
-
修改后的代码示例是什么?
- 请参阅本文中提供的示例代码。
-
如果我仍然遇到错误,该怎么办?
- 请确保你已正确遵循步骤,并检查代码是否存在语法错误或逻辑错误。