我将一堆人添加到列表中,我想稍后将其从列表中删除。我编写了一种方法,点击标准的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");
}
}
由于
答案 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)