【问题标题】:How to Pass data from different excel sheet having different data into a Test in selenium如何将具有不同数据的不同excel表中的数据传递到硒测试中
【发布时间】:2013-03-06 17:05:19
【问题描述】:

我最初的要求是,我有两张 Excel 表格

第一张表包含名字,姓氏 第二张表包含公司,电子邮件

我必须结合两张表数据并将其传递给测试,在测试中它应该采取

第一组 .... 名字、姓氏、公司、电子邮件。 第二组.. FirstName,LastName,Company,Email..

直到数据存在于 excel 工作表中.. 这里的问题是在传递参数时我必须传递四个参数,但在 excel sheet 2 参数中......

需要帮助......

================================================ ==================================================== ==

public Object[][] dataDetails() 抛出 BiffException, IOException{

    String pathofExcel="D:\\Test-Excel3.xls";
    String sheetName="test";

    Generics gen=new Generics();
    String employeeDetails[][]=gen.excelRead(pathofExcel, sheetName);


    return employeeDetails;
}

public Object[][] dataDetails2() throws BiffException, IOException{

    String pathofExcel="D:\\Test-Excel4.xls";
    String sheetName="test";

                 Generics gen=new Generics();
    String employeeDetailss[][]=gen.excelRead(pathofExcel, sheetName);

    return employeeDetailss;
}

      @DataProvider(name="enterformDetails")
public Object[][] dp() throws BiffException, IOException {
      List<Object[]> result = Lists.newArrayList();
      result.addAll(Arrays.asList(dataDetails()));
      result.addAll(Arrays.asList(dataDetails2()));
      return result.toArray(new Object[result.size()][]);
    }



@Test(dataProvider="enterformDetails")  
public  void employDetails(String FName,String LastName,String Comp,String Email){
    EmpDetails emp=new EmpDetails();
    emp.enterDetails(FName, LastName, Comp,Email);

  }

提前致谢..

【问题讨论】:

  • 你如何将哪个名字姓氏与哪个电子邮件公司结合起来??

标签: selenium selenium-webdriver testng


【解决方案1】:

我认为您需要的是一个 Dataprovider,它可以读取这两个文件并返回一个将两个文件中的值组合在一起的迭代器。

 @DataProvider
    public CSVIterator1 genericDataProvider(){

    File input1 = new File("c:\\file1.csv");
    File input2 = new File("c:\\file2.csv");

    return new CSVIterator1(input1,input2);


}




@Test(dataProvider ="genericDataProvider")
public void test1(String s1 , String s2, String i1, String i2){



}

并且您实现了 Iterator 接口以满足我们的需要。这是一个 CSV 迭代器。你可以实现一个excel迭代器。你就明白了。

   public class CSVIterator1 implements Iterator{

String line1;
String line2;
BufferedReader rdr1;
BufferedReader rdr2;

CSVIterator1(File input1 ,File input2){

    try {
         rdr1 = new BufferedReader(new FileReader(input1));
         rdr2 =new BufferedReader(new FileReader(input2));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

@Override
public boolean hasNext() {

    try {
        if((line1 = rdr1.readLine()) != null && (line2 = rdr2.readLine()) != null){
            return true;
        }

        // TODO Auto-generated method stub

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return false;
}



@Override
public void remove() {
    // TODO Auto-generated method stub

}



@Override
public Object next() {

    if(line1 !=null && line2 !=null){

        return genParams(line1,line2);

    }

    // TODO Auto-generated method stub
    return null;
}



public Object[] genParams(String line1 , String line2){

    String combined = line1+","+line2;


    StringTokenizer st = new StringTokenizer(combined, ",");
    Object[] result = new Object[st.countTokens()];
    int i=0;
    while(st.hasMoreTokens()){

        result[i] = st.nextElement();
        i++;
    }

    return result;
}

}

【讨论】:

    【解决方案2】:

    我会建议,从 xls 文件创建一个地图,并根据输入使用此地图来使用地图键获取数据。它将对您有很大帮助,因为只有在您创建地图并在脚本中的任何位置使用此地图之前。如果你这样做,那么你不必在脚本中的任何地方@DataProvider。

    步骤:从 xls 创建地图 使用键读取地图值 作为测试数据传递给测试用例。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多