无法从xls获取testdata,而通过“可执行jar”文件运行seleniumtesting

我使用下面的代码创build可执行的jar文件来运行selenium脚本。

public class ExecutableRar { public static void main(String[] args) { TestListenerAdapter tla = new TestListenerAdapter(); TestNG testng = new TestNG(); List<String> testFilesList = new ArrayList<String>(); testFilesList.add("C:\\path to testng.xml file\\testng.xml"); testng.setTestSuites(testFilesList); testng.setUseDefaultListeners(false); testng.addListener(tla); testng.run(); } } 

另外为了执行testing用例,我使用了testdata.xls。 每当我执行任何testing,testdata.xls是必需的。

以下是我的项目的层次结构:[请点击图片以取消]。

在这里输入图像说明

我已经从eclipse – > Project – > Export – >创build了可执行jar文件作为“Runnable jar文件”。

所以当我执行jar文件时,testing用例开始执行,但是找不到testdata.xls文件,所以脚本终止失败。

我的问题是:

我需要做什么更改,以便在使用jar文件执行testing时,我的脚本将从testingdata.xls中获取testing数据?

更新 : – 写这个代码后添加屏幕截图

 public String getCellDataWithRowColAndSheetName(int col, int row, String sheetName) throws BiffException, IOException { InputStream inputStream = this.getClass().getResourceAsStream("TestData/testdata.xls"); if (inputStream == null) { throw new IllegalStateException("Unable to read excel spreadsheet from the jar"); } Workbook workbook = Workbook.getWorkbook(inputStream); Sheet sheet = workbook.getSheet(sheetName); Cell cell = sheet.getCell(col, row); return cell.getContents(); } 

在这里输入图像说明

这取决于您用于阅读Excel电子表格的内容。

例如,如果您使用的是JXL,那么读取Excel电子表格的代码如下所示

 InputStream inputStream = this.getClass().getResourceAsStream("TestData/testdata.xls"); if (inputStream == null) { throw new IllegalStateException("Unable to read excel spreadsheet from the jar"); } jxl.Workbook workbook = jxl.Workbook.getWorkbook(inputStream); 

你要做的唯一的改变就是把你的代码从读取一个文件改变为从类path读取一个InputStream,然后把它提供给Excel读取机制。