2013-11-26 4 views
0

Я пытаюсь создать класс java для чтения файла excel. Я хочу использовать его в Selenium WebDriver (используя Eclipse IDE) для создания сценариев, управляемых сценариями.Ошибка вызова класса java (Selenium WebDriver, TestNG)

У меня есть одна линия, пни меня:

// ошибка здесь ---- >>>> Object [] [] retObjArr = данные ("C: \ ExcelFiles \ LoginData.xls");

Эта строка генерирует ошибку «Данные метода (String) не определены для типа« Вход » Я довольно новичок в ООП, но думал, что могу назвать класс 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 = данные ("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

Это дает: Данные метод (String) не определено для типа Логин – RalphF

+0

Вы назвали data.main() или data()? – Richard

+0

Ошибка msg для data(): Метод data() не определен – RalphF

Смежные вопросы