2014-09-25 56 views
0

创建2个类(DataProviderWithExcel,ExcelUtils)并导出登录详细信息(用户名,密码)。但它在“DataProviderWithExcel”类中跳过了“Registration_data”。Selenium with Java and TestNG - 使用Excel测试登录DataSheet

DataProviderWithExcel类

package practiceTestCases; 

import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.testng.annotations.AfterClass; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 
import org.testng.annotations.DataProvider; 
import utility.ExcelUtils; 

public class DataProviderWithExcel { 

    WebDriver driver; 
    private String sTestCaseName; 
    private int iTestCaseRow; 

    @BeforeClass 
    public void beforeMethod() throws Exception { 
    System.setProperty("webdriver.chrome.driver","E://chromedriver.exe"); 
     driver=new ChromeDriver(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     driver.get("http://www.store.demoqa.com");  
    } 

@Test(dataProvider="Authentication") 
public void Registration_data(String sUserName,String sPassword)throws Exception{ 
    driver.findElement(By.xpath(".//*[@id='account']/a")).click(); 
    driver.findElement(By.id("log")).sendKeys(sUserName); 
System.out.println(sUserName); 
driver.findElement(By.id("pwd")).sendKeys(sPassword); 
System.out.println(sPassword); 
driver.findElement(By.id("login")).click(); 
System.out.println(" Login Successfully, now it is the time to Log Off buddy."); 
driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click(); 
    } 

@DataProvider() 
public Object[][] Authentication() throws Exception{ 
    ExcelUtils.setExcelFile("E://My Work Place//Excel//src//testData//TestData.xlsx","Sheet1"); 
    sTestCaseName = this.toString(); 
     sTestCaseName = ExcelUtils.getTestCaseName(this.toString()); 
    iTestCaseRow = ExcelUtils.getRowContains(sTestCaseName,0); 
    Object[][] testObjArray = ExcelUtils.getTableArray("E://My Work Place//Excel//src//testData//TestData.xlsx//TestData.xlsx","Sheet1",iTestCaseRow); 
     return (testObjArray); 
    } 

@AfterClass 
public void afterMethod() { 
     driver.close(); 
    } 
} 

ExcelUtils类

package utility; 

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class ExcelUtils { 

    private static XSSFSheet ExcelWSheet; 
    private static XSSFWorkbook ExcelWBook; 
    private static XSSFCell Cell; 

public static void setExcelFile(String Path,String SheetName) throws Exception { 
     try { 
      FileInputStream ExcelFile = new FileInputStream(Path); 
      ExcelWBook = new XSSFWorkbook(ExcelFile); 
      ExcelWSheet = ExcelWBook.getSheet(SheetName); 
      } catch (Exception e){ 
       throw (e); 
      } 
    } 

public static Object[][] getTableArray(String FilePath, String SheetName, int iTestCaseRow) throws Exception 
{ 
    String[][] tabArray = null; 
    try{ 
     FileInputStream ExcelFile = new FileInputStream(FilePath); 
     ExcelWBook = new XSSFWorkbook(ExcelFile); 
     ExcelWSheet = ExcelWBook.getSheet(SheetName); 
     int startCol = 1; 
     int ci=0,cj=0; 
     int totalRows = 1; 
     int totalCols = 2; 
     tabArray=new String[totalRows][totalCols]; 
      for (int j=startCol;j<=totalCols;j++, cj++) 
      { 
       tabArray[ci][cj]=getCellData(iTestCaseRow,j); 
       System.out.println(tabArray[ci][cj]); 
      } 
    } 

    catch (FileNotFoundException e) 
    { 
     System.out.println("Could not read the Excel sheet"); 
     e.printStackTrace(); 
    } 

    catch (IOException e) 
    { 
     System.out.println("Could not read the Excel sheet"); 
     e.printStackTrace(); 
    } 
    return(tabArray); 
} 

public static String getCellData(int RowNum, int ColNum) throws Exception{ 
    try{ 
     Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum); 
     String CellData = Cell.getStringCellValue(); 
     return CellData; 
     }catch (Exception e){ 
     return""; 
     } 
    } 

public static String getTestCaseName(String sTestCase)throws Exception{ 
    String value = sTestCase; 
    try{ 
     int posi = value.indexOf("@"); 
     value = value.substring(0, posi); 
     posi = value.lastIndexOf(".");  
     value = value.substring(posi + 1); 
     return value; 
      }catch (Exception e){ 
     throw (e); 
       } 
    } 

public static int getRowContains(String sTestCaseName, int colNum) throws Exception{ 
    int i; 
    try { 
     int rowCount = ExcelUtils.getRowUsed(); 
     for (i=0 ; i<rowCount; i++){ 
      if (ExcelUtils.getCellData(i,colNum).equalsIgnoreCase(sTestCaseName)){ 
       break; 
      } 
     } 
     return i; 
      }catch (Exception e){ 
     throw(e); 
     } 
    } 

public static int getRowUsed() throws Exception { 
     try{ 
      int RowCount = ExcelWSheet.getLastRowNum(); 
      return RowCount; 
     }catch (Exception e){ 
      System.out.println(e.getMessage()); 
      throw (e); 
     } 
    } 
} 

错误

SKIPPED: Registration_data 
java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException 
    at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:161) 
    at org.testng.internal.Parameters.handleParameters(Parameters.java:429) 
    at org.testng.internal.Invoker.handleParameters(Invoker.java:1383) 

回答

0

你缺少一个JA R档或它的依赖性,如果您使用的pom.xml那么下面的依赖关系添加到POM文件

<dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.9</version> 
</dependency> 

如果没有,那么从Apache的POI网站下载poi.jar V3.9和POI-OOXML V3.9并将其添加到项目的类路径

+0

在执行代码之前,我从“http://poi.apache.org/download.html”下载了jar文件“poi-bin-3.10.1-20140818” '网站。我加入了这个项目。但它显示上述错误。 – Chamindi 2014-09-25 11:01:14

+0

Chamindi:从Apache下载的bin文件夹中共有9个jar,你能告诉我哪些是你添加到项目类路径 – 2014-09-25 17:42:15

+0

poi-3.10.1-20140818,poi-examples-3.10。 1-20140818,poi-excelant-3.10.1-20140818,poi-ooxml-3.10.1-20140818,poi-ooxml-schemas-3.10.1-20140818,poi-scratchpad-3.10.1-20140818 – Chamindi 2014-09-26 04:20:56