2013-11-26 54 views
0

我试图创建一个读取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() ; 
     } 
} 

回答

0

尝试这种情况:

Object[][] retObjArr = data.fileRead("C:\ExcelFiles\LoginData.xls"); 

修改main如下: 主更改为FILEREAD

public static Object[][] fileRead(String args) throws Exception{ 
    File excel = new File(args); 
+0

这给了:该方法的数据(字符串)是未定义的类型登录 – RalphF

+0

你打电话data.main()或数据()? – Richard

+0

data()的错误消息是:方法data()未定义 – RalphF

相关问题