如何在selenium中将具有不同数据的不同excel工作表中的数据传递到测试中
我最初的要求是,我有两张excel表格 第一页包含名字和姓氏 第二张包括公司、电子邮件 我必须结合两张表的数据,并通过测试和测试,它应该采取 第一盘。。。。名字,姓氏,公司,电子邮件。 第二盘。。名字、姓氏、公司、电子邮件 直到数据存在于excel工作表中。。 这里的问题是,在传递参数时,我必须传递四个参数,但在excel工作表2中,参数 需要帮助 =================================================================================================== 公共对象[][]dataDetails()引发BiffException,IOException{如何在selenium中将具有不同数据的不同excel工作表中的数据传递到测试中,selenium,selenium-webdriver,testng,Selenium,Selenium Webdriver,Testng,我最初的要求是,我有两张excel表格 第一页包含名字和姓氏 第二张包括公司、电子邮件 我必须结合两张表的数据,并通过测试和测试,它应该采取 第一盘。。。。名字,姓氏,公司,电子邮件。 第二盘。。名字、姓氏、公司、电子邮件 直到数据存在于excel工作表中。。 这里的问题是,在传递参数时,我必须传递四个参数,但在excel工作表2中,参数 需要帮助 ==========================================================================
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);
}
String pathofExcel=“D:\\Test-Excel3.xls”;
String sheetName=“test”;
泛型gen=新泛型();
字符串employeeDetails[]]=gen.excelRead(pathofExcel,sheetName);
返回员工详细信息;
}
公共对象[][]dataDetails2()引发BiffException,IOException{
字符串pathofExcel=“D:\\Test-Excel4.xls”;
String sheetName=“test”;
泛型gen=新泛型();
字符串EmployeeDetails[][]=gen.excelRead(pathofExcel,sheetName);
返回员工详细信息;
}
@数据提供者(name=“enterformDetails”)
公共对象[][]dp()引发BiffeException,IOException{
列表结果=Lists.newArrayList();
addAll(Arrays.asList(dataDetails());
addAll(Arrays.asList(dataDetails2());
返回result.toArray(新对象[result.size()][]);
}
@测试(dataProvider=“enterformDetails”)
公开作废员工详细信息(字符串FName、字符串LastName、字符串Comp、字符串Email){
EmpDetails emp=新的EmpDetails();
emp.enterDetails(FName、LastName、Comp、Email);
}
提前感谢。我认为您需要的是一个数据提供程序,它将读取这两个文件并返回一个迭代器,该迭代器将两个文件中的值组合在一起
@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){
}
您可以根据我们的需要实现迭代器接口。这是一个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;
}
}我建议,从xls文件创建一个映射,并根据输入使用此映射使用映射键获取数据。它将帮助您很多,因为只有在您创建映射并在脚本中的任何位置使用该映射之前。如果这样做,则不必在脚本中的任何地方使用@DataProvider 步骤:从xls创建贴图 使用键读取地图值
作为测试数据传递给testcase。您如何将哪个名字和哪个电子邮件公司相关联??