Java 如何打破';而';selenium中下一个循环不存在数据时的条件

Java 如何打破';而';selenium中下一个循环不存在数据时的条件,java,selenium,Java,Selenium,这里我的问题是我有一个供应商查找,我必须阅读供应商的搜索结果 基于搜索筛选器(例如:供应商名称以开头,以结尾等)。这里我们不知道供应商搜索结果的数量。 我正在使用while条件重拨供应商,并滚动到下一个供应商。在这里,我无法打破while条件 获取所有供应商时。因此,请让我给出如何将适当的条件写入while循环的答案 try{ int i=2; boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody

这里我的问题是我有一个供应商查找,我必须阅读供应商的搜索结果 基于搜索筛选器(例如:供应商名称以开头,以结尾等)。这里我们不知道供应商搜索结果的数量。 我正在使用while条件重拨供应商,并滚动到下一个供应商。在这里,我无法打破while条件 获取所有供应商时。因此,请让我给出如何将适当的条件写入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());
    }
结果是: 读取所有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
。在执行滚动操作之前,您是否能够获得搜索结果计数?