selenium-webdriver - 从 xlsx 文件中获取数据时出现未找到文件异常
问题描述
我的 excel 文件中有 3 张工作表。我正在尝试使用 TestNG 的 @DataProvider 注释获取数据。在 getTestData() 方法中,我传递了工作表的名称。通过FileInputStream,读取文件的路径。即使我正在打印文件路径,它也会正确显示。构建路径打印为 - C:\Users\Gaurav Pratap Singh\eclipse-workspace\SampleTestFrameworkGPS\src\main\java\com\crm\qa\testData\FreeCRMTestData.xlsx。唯一的问题可以是目录名称中的空格。但是我还有一个文件,即 config.properties,它完全是从同一目录中提取的。
package com.crm.qa.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import com.crm.qa.base.TestBase;
public class TestUtil extends TestBase {
public static String TESTDATA_SHEET_PATH = System.getProperty("user.dir")
+ "\\src\\main\\java\\com\\crm\\qa\\testData\\FreeCRMTestData.xlsx";
public static Workbook book;
public static Sheet sheet;
public static Object[][] getTestData(String sheetName){
FileInputStream fis = null;
try {
fis = new FileInputStream(new File(TESTDATA_SHEET_PATH));
// File Path printing perfectly
System.out.println("Sheet path " + TESTDATA_SHEET_PATH);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("Sheet path " + TESTDATA_SHEET_PATH);
try {
book = WorkbookFactory.create(fis);
} catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
sheet = book.getSheet(sheetName);
Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];
for (int i = 0; i < sheet.getLastRowNum(); i++) {
for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) {
data[i][k] = sheet.getRow(i + 1).getCell(k).toString();
}
}
return data;
}
}
解决方案
这是因为路径,Gaurav Pratap Singh文件夹中有空格。我已经更改了没有任何空格的驱动器并且它有效。我能够从同一目录访问 config.properties 文件,这很奇怪。
推荐阅读
- scikit-learn - Sagemaker 管道 - 处理步骤 - SKLearn - 缺少 SKLearn 扩展
- spring - @PostConstruct 方法可以在依赖于 @PostConstruct 的bean初始化之后执行吗?
- mysql - MySql:使用连接和where子句“插入”时重复值
- tailwind-css - 无法看到 pdf 中的样式 - 顺风 css
- python - Cloudera Impala INVALIDATE METADATA 表列表
- label - 如何更改分段掩码中的类标签顺序
- powershell - 如何用“”包裹 & 以转义 & 符号
- docker - 如何允许具有只读根文件系统的容器写入 tmpfs-volume?
- powershell - Windows Server 任务计划程序触发器 AtStartUp
- laravel - 如何将 API 获取响应 (HTML) 显示到新窗口选项卡/iframe