我试图创建一个读取excel文件的java类。我想在Selenium WebDriver(使用Eclipse IDE)中使用它来执行测试驱动的脚本。调用Java类(Selenium WebDriver,TestNG)时出错
我有一个行树桩我:
//错误这里---- >>>>对象[] [] = retObjArr数据( “C:\ ExcelFiles \ LoginData.xls”);
此行生成错误“的方法数据(字符串)是未定义的类型登录” 我是相当新的OOP,但想到可以调用类ExcelRead像上面并通过在一个ARG字符串。 ..但显然不是!
我相信你们中的很多人都知道TestNG DataProviders注释是如何工作的,这正是我在这里要做的。有很多这样的例子,但是他们都将ExcelRead代码放到主TestNG项目(在这种情况下是Login)中。我想我会让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();
//错误这里---- >>>>对象[] [] = retObjArr数据( “C:\ ExcelFiles \ LoginData.xls”); return(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() ;
}
}
这给了:该方法的数据(字符串)是未定义的类型登录 – RalphF
你打电话data.main()或数据()? – Richard
data()的错误消息是:方法data()未定义 – RalphF