当硒中的下一个循环不存在数据时,如何打破“ while”条件

时间:2018-06-26 07:30:08

标签: java selenium

在这里我的问题是我要进行供应商查找,必须阅读供应商以进行搜索重新搜索。结果是 基于搜索过滤器(例如:供应商名称开头,结尾等)。在这里,我们不知道供应商搜索结果的数量。 我正在使用滚动到下一个供应商的条件来充实供应商。在这里我无法打破一会儿的状况 当所有供应商都被拿走时。因此,请允许我给出如何向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循环。

1 个答案:

答案 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());
        }

希望它可以帮助您。