在这里我的问题是我要进行供应商查找,必须阅读供应商以进行搜索重新搜索。结果是 基于搜索过滤器(例如:供应商名称开头,结尾等)。在这里,我们不知道供应商搜索结果的数量。 我正在使用滚动到下一个供应商的条件来充实供应商。在这里我无法打破一会儿的状况 当所有供应商都被拿走时。因此,请允许我给出如何向while循环中写入适当条件的答案
try{
int i=2;
boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed();
while(ele==true){
String path="//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]"; // Here i value starts from 2
String txt=d.findElement(By.xpath(path)).getAttribute("title");
System.out.println(txt);
scrollBarHandle("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]");
i++;
ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed()
Thread.sleep(1000);
}
}catch(Exception e){
System.out.println(e.getMessage());
}
输出为: 阅读所有吠陀动物后,不会显示此类元素消息。
org.openqa.selenium.NoSuchElementException:无此类元素:无法 定位元素: {“ method”:“ xpath”,“ selector”:“ // table [@ id ='vendorTable'] / tbody / tr [9] / td [1]”}
所有供应商阅读完毕后如何中断while循环。
答案 0 :(得分:0)
您首先可以找到此选择器返回的元素编号,然后在其上添加if条件: 下面是代码:
try{
int i=2;
boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed();
while(ele==true){
String path="//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]"; // Here i value starts from 2
List<WebElement> elements = driver.findElements(By.xpath(path));
if (elements.size() == 0) {
break;
}
String txt=d.findElement(By.xpath(path)).getAttribute("title");
System.out.println(txt);
//scrollBarHandle("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]");
i++;
ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed()
Thread.sleep(1000);
}
}catch(Exception e){
System.out.println(e.getMessage());
}
希望它可以帮助您。