繁体   English   中英

调用Java类(Selenium WebDriver,TestNG)时出错

[英]Error calling a java class (Selenium WebDriver, TestNG)

我正在尝试创建一个用于读取Excel文件的Java类。 我想在Selenium WebDriver(使用Eclipse IDE)中使用它来测试驱动脚本。

我有一条让我难过的地方:

//这里出现错误---- >>>> Object [] [] retObjArr = data(“ C:\\ ExcelFiles \\ LoginData.xls”);

该行生成错误“对于登录类型未定义方法data(String)”,我对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();

//这里出现错误---- >>>> Object [] [] retObjArr = data(“ 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() ;
        }
}

尝试这个:

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

如下修改main :将main更改为fileRead

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM