Selenium / Java:' isDisplayed()'的替代方法用于验证元素是否存在

时间:2017-05-23 12:58:08

标签: java selenium selenium-webdriver

似乎if (isset($_SESSION['data'][$id])) { echo "$id in array"; } else { echo "$id not in array"; } 方法在我们的框架中不起作用。

如果元素显示在应用程序中,它可以正常工作。如果没有,则抛出.isDisplayed()。所以,只是想知道是否有任何其他方法来验证元素是否存在并相应地写if-else条件。

6 个答案:

答案 0 :(得分:2)

如果元素显示然后执行您的操作,您可以将代码括在Try和catch块中并维护条件。如果元素没有显示,那么它将通过catch块处理的异常。

 try
{
      if(usersname.isDisplayed())
    {
        System.out.println("Already Login");

    }
}
catch(Exception e)
{            
        new UserLogin(driver).doLogin(TestDataComman.username, TestDataComman.password);
}

答案 1 :(得分:0)

您可以通过以下代码检查元素是否存在:

driver.findElements( By.id("...") ).size() != 0

答案 2 :(得分:0)

除了使用isDisplayd()方法之外的一种方法是:

计算元素数量并检查它是否大于零

代码段:

boolean isPresent = driver.findElements(By.cssSelector("your selector")).size() > 0;

答案 3 :(得分:0)

您可以创建自己的自定义方法来验证页面上是否存在元素

    public boolean IsElementPresent(String locatorKey) {
    List<WebElement> e = null;
    e = driver.findElements(By.id(locatorKey));

    if (e.size() == 0) {
        return false;
    } else {
        return true;
    }
}

希望这有帮助

答案 4 :(得分:0)

您可以尝试以下方法来检查元素是否存在:

  public boolean isPresent(By locator_of_your_element){

  List <WebElement> yourElement = driver.findElements(your locator here);

  if (yourElement.size()!=0){

      return true;
    }
    else{

     return false;
  }
  }

答案 5 :(得分:0)

您获得空指针异常的原因是, isDisplayed()方法假定元素已存在,然后检查它是否可见。

这是我检查元素是否存在的方法吗?

public boolean isElementExist(By element, int timeout){
    wait = new WebDriverWait(driver, timeout);
    try{
        return wait.until(ExpectedConditions.presenceOfElementLocated(element));

    }catch (TimeoutException te){
        return null;
    }
}

您可以调用此方法获取元素Object,然后检查它是否显示。或者更好,您可以使用以下代码等待元素可见。

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(a)));