【发布时间】:2013-11-26 21:39:48
【问题描述】:
我正在尝试创建一个用于读取 excel 文件的 java 类。我想在 Selenium WebDriver(使用 Eclipse IDE)中使用它来做测试驱动脚本。
我有一句话难倒我:
//这里出错---->>>>Object[][] retObjArr = data("C:\ExcelFiles\LoginData.xls");
此行正在生成错误“未定义登录类型的方法数据(字符串)” 我对 OOP 还很陌生,但我想我可以像上面那样调用 ExcelRead 类并传入一个 arg 字符串……但显然不是!
我相信你们中的许多人都知道 TestNG DataProviders 注释是如何工作的,这正是我在这里尝试做的。有很多这样的例子,但它们都将 ExcelRead 代码拉入主 TestNG 项目(在本例中为登录)类。我想我会将 excelRead 类设为一个单独的类文件,我可以从我将来创建的任何测试类中调用它。
import org.openqa.selenium.WebElement;
import org.openqa.selenium.safari.SafariDriver;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class Login {
@DataProvider(name = "ExcelInput")
public Object[][] createData() throws Exception{
ExcelRead data = new ExcelRead();
//这里出错---->>>>Object[][] retObjArr = data("C:\ExcelFiles\LoginData.xls"); 返回(retObjArr); }
@Test(dataProvider = "ExcelInput")
public void LoginTest(String Username, String Password) throws InterruptedException{
System.out.println("test");
}
}
// code in its own Class file
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExcelRead {
public static Object[][] main( String[] args) throws Exception{
File excel = new File(args[1]);
FileInputStream fis = new FileInputStream(excel);
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet ws = wb.getSheet("Input") ;
int rowNum = ws.getLastRowNum() + 1 ;
int colNum = ws.getRow(0).getLastCellNum() ;
String[][] data = new String[rowNum][colNum] ;
for ( int i = 0 ; i < rowNum ; i++) {
HSSFRow row = ws.getRow(i) ;
for ( int j = 0 ; j < colNum ; j++) {
HSSFCell cell = row.getCell(j) ;
String value = cellToString(cell);
data[i][j] = value ;
System.out.println("the value is " + value);
}
}
return data;
}
public static String cellToString(HSSFCell cell) {
int type ;
Object result ;
type = cell.getCellType() ;
switch (type) {
case 0 : // numeric value in Excel
result = cell.getNumericCellValue() ;
break ;
case 1 : // String Value in Excel
result = cell.getStringCellValue() ;
break ;
default :
throw new RuntimeException("There are no support for this type of cell") ;
}
return result.toString() ;
}
}
【问题讨论】:
标签: java class selenium testng