Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用java类时出错(Selenium WebDriver,TestNG)_Java_Class_Selenium_Testng - Fatal编程技术网

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

调用java类时出错(Selenium WebDriver,TestNG),java,class,selenium,testng,Java,Class,Selenium,Testng,我正在尝试创建一个用于读取excel文件的java类。我想在SeleniumWebDriver(使用EclipseIDE)中使用它来编写测试驱动脚本 我有一句话难住了我: //此处出现错误---->>>>Object[]retObjArr=data(“C:\ExcelFiles\LoginData.xls”) 此行生成错误“登录类型的方法数据(字符串)未定义” 我是OOP新手,但我想我可以像上面那样调用ExcelRead类并传入一个arg字符串…但显然不是 我相信你们中的许多人都知道TestNG

我正在尝试创建一个用于读取excel文件的java类。我想在SeleniumWebDriver(使用EclipseIDE)中使用它来编写测试驱动脚本

我有一句话难住了我:

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

此行生成错误“登录类型的方法数据(字符串)未定义” 我是OOP新手,但我想我可以像上面那样调用ExcelRead类并传入一个arg字符串…但显然不是

我相信你们中的许多人都知道TestNG数据提供者注释是如何工作的,这就是我在这里要做的。有很多这样的例子,但它们都将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() ;
        }
}
@Test(dataProvider=“ExcelInput”)
public void LoginTest(字符串用户名、字符串密码)引发InterruptedException{
系统输出打印(“测试”);
}
}
//代码在其自己的类文件中
导入java.io.File;
导入java.io.FileInputStream;
导入org.apache.poi.hssf.usermodel.HSSFCell;
导入org.apache.poi.hssf.usermodel.HSSFRow;
导入org.apache.poi.hssf.usermodel.HSSFSheet;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
公共课精读{
公共静态对象[][]main(字符串[]args)引发异常{
文件excel=新文件(args[1]);
FileInputStream fis=新的FileInputStream(excel);
HSSF工作手册wb=新的HSSF工作手册(fis);
HSSFSheet ws=wb.getSheet(“输入”);
int rowNum=ws.getLastRowNum()+1;
int colNum=ws.getRow(0.getLastCellNum();
字符串[][]数据=新字符串[rowNum][colNum];
for(int i=0;i
试试这个:

Object[][] retObjArr = data.fileRead("C:\ExcelFiles\LoginData.xls");
修改
main
,如下所示: 将main更改为fileRead

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

这就给出了:对于您调用data.main()或data()的类型Logindid,方法数据(字符串)未定义?Code data.main()错误消息:类型ExcelRead中的方法main(字符串[])不适用于参数(字符串)解决方案:对象[][]retObjArr=data.main(新字符串[]{“C:\\ExcelFiles\\LoginData.xls”,“LoginData”});