[英]How to read a specific value from Excel sheet using Selenium WebDriver TestNG Data Provider Method?
[英]How to pass value by reference in xpath where the values are imported from external excel sheet in selenium webdriver
我试图自动执行功能流程,在该流程中添加项目,然后确认是否添加成功。 我的Web表单有3个字段(例如fld1,fld2,fld3)。 我创建了一个外部Excel工作表,从该工作表中调用了fld1 fld2和fld3值并将其输入到表单中并进行提交。 我要自动化的步骤是:
form1的UI是3个字段,分别是fld1,fld2,fld3,并在这些字段下方显示一个网格,以显示已添加的项目,一旦添加了项目,它将开始在此网格中显示为网格的最后一行。 一旦我们从表格1的excel表格中导入所有3个字段并提交,单击提交后,将打开一个iframe窗口,其中显示%上传,一旦其上传100%,用户需要单击关闭按钮和iframe类,并且用户位于表格1再次将项目添加为网格的最后一行。 直到这里我都能自动化。 我要检查项目是否已添加。 为此,我尝试使用assert,但不确定如何在xpath中通过引用传递值。 如果我对其进行硬编码,那么脚本将无法在excel工作表的第2行进行第二次迭代。我的问题是我应该如何在findElement By id或使用assert条件中通过引用传递值。 代码在这里:
String projectName = null;
WebDriverWait wait = new WebDriverWait( driver, 200);
FileInputStream IPLinkFile = new FileInputStream(new File("xlsx sheet location"));
XSSFWorkbook workbook = new XSSFWorkbook(TestIPLFile);
XSSFSheet sheet = workbook.getSheet("Test");
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
Thread.sleep(500);
driver.findElement(By.id("InsertButtonID")).click();
wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.id("pname1ID")));
Iterator <Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if (cell.getColumnIndex()==0)
{
driver.findElement (By.id("pname1ID")).clear();
projectName = cell.getStringCellValue();
driver.findElement (By.id("pname1ID")).sendKeys(cell.getStringCellValue());
} else if(cell.getColumnIndex()==1)
{
Thread.sleep(500);
driver.findElement(By.id("gvhost1ID")).clear();
driver.findElement(By.id("gvhost1ID")).sendKeys(cell.getStringCellValue());
} else if(cell.getColumnIndex()==2)
{
Thread.sleep(500);
driver.findElement(By.id("gcTest1")).clear();
driver.findElement(By.id("gcTest1")).sendKeys(cell.getStringCellValue());
}
else
{
break;
}
}
driver.findElement(By.id("btnUpdateImportID")).click();
Thread.sleep(10000);
driver.switchTo().frame("TestImportTest");
driver.findElement(By.id("form1"));
driver.findElement(By.id("btnClose")).click();
System.out.println("**********User uploaded IPLink Project successfully**********"+projectName);
driver.navigate().refresh();
Thread.sleep(500);
driver.findElement(By.xpath("//div[@id = 'GridDataID']//td[contains(text(), 'TestAuto1')]"));
System.out.println("**********User uploaded IPLTest Projects found**********"+projectName);
}
我将硒与java和testNG一起使用。
Java不支持自然引用传递。 相反,要通过引用传递值,必须生成对象的指针。 然后可以将指针传递给适当的函数。 您可以使用在API中定义的指针对象或通过将数据封装在对象中来执行此操作。 通过传递对象,您将传递参考。 实际上,所有对象传递都是参考传递,而所有非对象传递都是值传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.