使用WebDriver findElements()。isEmpty方法检查元素是否存在

时间:2015-06-23 13:48:42

标签: java selenium selenium-webdriver

我需要检查页面上是否存在某些元素。
我已经看到了这个WebDriver: check if an element exists?问题,但我想知道为什么不简单地应用findElements().isEmpty方法?
我以为它会做同样的工作。

UPD 现在我看到findElements().isEmpty完美无缺,所以我只是想知道为什么要寻找其他更复杂的方法,而有一种直截了当的方法呢?

4 个答案:

答案 0 :(得分:1)

isEmpty()实际上来自Java List类,因为findElements()返回了List个WebElements。

答案 1 :(得分:0)

findElements返回与给定选择器匹配的所有元素的列表。所以你在这里使用了isEmpty()方法内置的java列表。

答案 2 :(得分:0)

 public static WebElement findElement(WebDriver driver, By selector, long timeOutInSeconds) {
    WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
    wait.until(ExpectedConditions.presenceOfElementLocated(selector));
    return findElement(driver, selector);
  }


  public static WebElement findElementSafe(WebDriver driver, By selector, long timeOutInSeconds) {
    try {
      return findElement(driver, selector, timeOutInSeconds);
    } catch (TimeoutException e) {
      return null;
    }
  }

答案 3 :(得分:0)

以下代码适用于WebDriver

if(driver.findElements(By.xpath(xpath)).size()!=0)
{
    ...
}

但是如果我们使用 WebElementFacade ,我们可以编写下面的内容,这样更容易。

@FindBy(xpath = "xpathvalue")
private WebElementFacade element;

if(element.isPresent())
{
    ...
}