如何确定Selenium是否存在WebElement?

时间:2016-12-13 15:52:34

标签: java selenium selenium-webdriver pageobjects

我知道我可以使用(driver.findElements(By.xpath("Xpath Value")).size() != 0);

但是,我使用的是页面对象模型,其目的是在单独的类中预定义WebElements,因此我的测试类中没有“FindElements By”。

这是我目前拥有的

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

但是,这会尝试识别可能不存在的WebElement。当它不存在时,我得到:

  

没有这样的元素“例外。

2 个答案:

答案 0 :(得分:5)

最佳做法是执行您最初建议的操作,使用.findElements()并检查.size != 0,或者您也可以使用我的偏好.isEmpty()。您可以创建如下所示的Util函数来测试元素是否存在。

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

您还可以将其构建到页面对象中的函数中。

答案 1 :(得分:-2)

您可以使用isDisplayed()来检查元素是否可见。它足够简单,可以编写一个可以做你想要的方法。类似的东西:

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