2016-12-13 75 views
2

我知道我可以使用(driver.findElements(By.xpath("Xpath Value")).size() != 0);如何确定Selenium是否存在WebElement?

不过,我使用的是页面对象模型,谁的整个目的是预先定义WebElements在一个单独的类,所以我没有在我的测试类“FindElements通过” 。

这里是我目前有

if (objPage.webElement.isEnabled()){ 
    System.out.println("found element"); 
}else{ 
    System.out.println("element not found"); 
} 

然而,这种尝试识别其可能不存在WebElement。当它不存在,我得到:

没有这样的元素”异常

+2

当您对可能不存在的元素使用FindBy批注时,请尝试使用列表?如果不是大小将为零。 – Grasshopper

+0

@Grasshopper这是一个很好的答案!你为什么不把它做成完整的而不是简单的评论? – Cryptor

+0

@Cryptor JeffC的答案具有相同的逻辑,我认为这是处理这些案例的正确方法。 – Grasshopper

回答

-2

您可以使用isDisplayed()来检查元素是否可见它够琐碎写一个方法。这将做你想做的事情是:

public boolean isElementDisplayed(WebElement element) { 
    try { 
     return element.isDisplayed(); 
     } catch(NoSuchElementException e) { 
     return false; 
    } 
} 
+0

抓住这个异常很好,谢谢。 – dsidler

+2

一个警告的话......这个答案有一个隐藏的陷阱。如果你想确认一个元素不被显示,但该元素不存在,该怎么办?这个函数会返回false,并且测试会通过,但是元素甚至不在页面上......误报。测试存在的元素...然后测试它是否被启用。 – JeffC

+0

在检查任何条件之前,我们需要检查元素的存在。 – Akarsh

2

最佳做法是做什么您最初的建议,使用.findElements()和检查.size != 0,或者您也可以使用我的偏好,.isEmpty()您可以创建一个尿路感染。 l像下面的函数一样测试一个元素是否存在。

public boolean elementExists(By locator) 
{ 
    return !driver.findElements(locator).isEmpty(); 
} 

你也可以在你的页面对象中建立一个函数。

相关问题