Java 如何打破';而';selenium中下一个循环不存在数据时的条件
这里我的问题是我有一个供应商查找,我必须阅读供应商的搜索结果 基于搜索筛选器(例如:供应商名称以开头,以结尾等)。这里我们不知道供应商搜索结果的数量。 我正在使用while条件重拨供应商,并滚动到下一个供应商。在这里,我无法打破while条件 获取所有供应商时。因此,请让我给出如何将适当的条件写入while循环的答案Java 如何打破';而';selenium中下一个循环不存在数据时的条件,java,selenium,Java,Selenium,这里我的问题是我有一个供应商查找,我必须阅读供应商的搜索结果 基于搜索筛选器(例如:供应商名称以开头,以结尾等)。这里我们不知道供应商搜索结果的数量。 我正在使用while条件重拨供应商,并滚动到下一个供应商。在这里,我无法打破while条件 获取所有供应商时。因此,请让我给出如何将适当的条件写入while循环的答案 try{ int i=2; boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody
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());
}
结果是:
读取所有VEDNOR后,不会显示此类元素消息
org.openqa.selenium.NoSuchElementException:无此类元素:无法
定位元素:
{“方法”:“xpath”,“选择器”:”//table[@id='vendorTable']/tbody/tr[9]/td[1]”
如何在所有供应商读取完成后中断while循环。您可以首先找到此选择器返回的元素数,并对其设置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());
}
试试看{
int i=2;
boolean ele=d.findelelement(By.xpath(//table[@id='vendorTable']/tbody/tr[“+i+”]/td[1]”);
while(ele==true){
String path=“//表[@id='vendorTable']/tbody/tr[“+i+”]/td[1];//这里i值从2开始
List elements=driver.findElements(By.xpath(path));
if(elements.size()==0){
打破
}
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.findelelement(By.xpath(//table[@id='vendorTable']/tbody/tr[“+i+”]/td[1]”)
睡眠(1000);
}
}捕获(例外e){
System.out.println(e.getMessage());
}
希望它能帮助你。循环已经被删除了循环中的Test/catch。既然你有一个迭代,那么你应该考虑<代码> do,而< <代码> >而不是<代码>。除了检查条件值之外,还要检查它是否为
null
,或者可能是try catch
。在执行滚动操作之前,您是否能够获得搜索结果计数?