我正在使用selenium
来比较web-table
中的名称,我已经声明了具有名字和名字的局部变量,并将其与网络表中存在的值进行比较。
对于正流程,我的代码正常运行并显示预期结果。
对于否定流,其中声明的字符串lastname
中的名称与Web表中存在的值不匹配,则不显示预期结果。 assertTrue
中显示的消息未打印。我的日食显示testng
正在运行,但之后没有任何事情发生。
我假设web-table
除了'Product'之外有任何姓氏然后找到记录应该得到false值,它应该移到'AssertTrue'行并且应该打印stmt Lastname is not as expected
。< / p>
@Test
public void abc(){
String firstname="Test";
String lastname="Product";
boolean recordfound= false;
String firstpart="//*[@id='fchArea']/table/tbody/tr[";
String secondpart="]/td[1]/a";
int i=8;
while (iselementpresent(firstpart+i+secondpart)){
//firstname
String name1=driver.findElement(By.xpath(firstpart+i+secondpart)).getText();
if (name1.equals(firstname)){
String altofsecondpart = firstpart+i+secondpart.replace("td[1]", "td[2]");
String name2=driver.findElement(By.xpath(altofsecondpart)).getText();
if(name2.equals(lastname)){
System.out.println("secondcase pass");
recordfound = true;
break;
}
}
}
Assert.assertTrue(recordfound, "Lastname is not as expected");
}
public boolean iselementpresent(String xpath){
int lst=driver.findElements(By.xpath(xpath)).size();
if(lst == 0){
return false;
}
else{
return true;
}
}
答案 0 :(得分:0)
你的while循环继续无限,并且总是检查索引8的元素,因为你修复了i值。所以你应该增加或减少我的价值。但是在那种情况下如果行号不存在则会给出找不到元素的错误。
因此,最好的方法是捕获Web表中的行数,然后迭代循环。
谢谢, -Sadik