用于检查页面中是否存在元素的函数

时间:2014-02-02 14:46:50

标签: java selenium testng

创建一个函数来检查页面上是否存在元素。意图是等待一段指定的时间,然后返回false(如果不存在)。

public boolean isElementPresent(final WebElement element){

    Wait<WebDriver> wait = new WebDriverWait(driver, 60);
    return wait.until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver webDriver) {
            return element.isDisplayed() != false;
        }
    });
}

但是在未找到元素的情况下抛出异常

4 个答案:

答案 0 :(得分:2)

它抛出异常,因为如果没有找到元素,findElement将抛出异常。它用于isDisplayed()方法。您可以先检查页面上是否有元素,然后检查是否显示。使用以下方法进行第一次检查。

driver.findElements(byLocator).size>0

答案 1 :(得分:0)

以下是粗略的解决方案。但它仍然有效:p

public boolean isElementPresent() {
    try {
        new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocatedBy(By.id(""));
        return true;  
    } catch (TimeOutException e) {
        return false;
    }
}

当我们使用WebDriverWait类等待网页中存在元素时,会在指定时间后抛出TimeOut异常。我们抓住它并返回false。如果没有抛出异常(如果找到了元素),我们返回true。

如果要查看元素是否已启用或显示,请浏览与WebElement关联的isDisplayed或isEnabled方法。但请注意,如果网页中没有实际存在该元素,则会引发异常。

答案 2 :(得分:0)

这是另一种不那么“野蛮”的方法: -

public boolean isElementPresent() {  
    List<WebElement> elements = new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementsLocatedBy(By.id(""));
    if (elements.isEmpty()) {
        return false;
    } else {
        return true;
    }
}

答案 3 :(得分:0)

这会对你有帮助。

 public boolean fncCheckElement() {
try {
    WebElement element = (new WebDriverWait(driver,1)).until(ExpectedConditions.presenceOfElementLocated((By.id("ID"))));
 system.out.println("Element is present in web page")  
 return true;  
} catch (Throwable e) {
    ex.printStackTrace();
    system.out.println("Element is not present  in web page")
    return false;
}}

享受!