Selenium / Java退出while循环

时间:2015-03-30 12:59:37

标签: java selenium while-loop fluentlenium

我将一堆人添加到列表中,我想稍后将其从列表中删除。我编写了一种方法,点击标准的X元素来删除用户。我的问题是,当我到达不再有X元素实例的点时,我得到如下错误:

" [31morg.openqa.selenium.NoSuchElementException:无法找到元素:{"方法":" xpath","选择器":& #34; // div [3] / ul / li / div / div / img"}"

但不是我从我的While循环中走出来的方式吗?当element = null并且因此条件为false时,while循环才结束并且不会发出错误消息?

public class PrivacyList extends FluentPage {

@FindBy(xpath="//div[3]/ul/li/div/div/img") 
private FluentWebElement XIcon ;


public void removeUserFromlist(){

    while(XIcon!= null){            
            System.out.println("XICON is displayed");
            XIcon.click();
            System.out.println("XICON was clicked");
        }
    System.out.println("Users Removed");
}

}

由于

2 个答案:

答案 0 :(得分:2)

PageFactory,使用@FindBy,懒惰地评估WebElement - 这意味着第一次使用它。在第一次之后,再次评估!因此,在您的情况下,如果第一次找到它,它将永远不会变为null,除非您每次通过循环重新评估它。

您将不得不使用其他东西退出循环。也许是//div[3]/ul/li元素的计数。

答案 1 :(得分:1)

评估Xpath地址而不是webElement解决了这个问题,并且是一个简单的方法。

while(driver.findElements(By.xpath("//div[3]/ul/li/div/div/img")).size()!=0)