【问题标题】:function to check whether an element is present in the page检查页面中是否存在元素的函数
【发布时间】:2014-02-02 14:46:49
【问题描述】:

创建了一个函数来检查页面上是否存在元素。意图是等待指定的时间段,然后返回 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;
        }
    });
}

但是如果找不到元素,这会引发异常

【问题讨论】:

  • 欢迎来到stackoverflow。如果您发现它们有用,请接受答案。 :)

标签: java selenium testng


【解决方案1】:

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

driver.findElements(byLocator).size>0

【讨论】:

  • 感谢 Husam,提供反馈。但是我在这里没有得到大小的目的。它将如何解决我的目的。此外,我确实有可用的 getsize() 函数,但没有 size()。
  • findElements(),如果页面上不存在这样的元素,方法不会抛出异常,它会返回找到的所有匹配元素的列表。因此,如果返回的列表大小 > 0,则表示您的元素存在于页面上。在此之后,您可以检查该元素是否显示在页面上。这样你就不会得到你之前得到的异常。 size() 是 java List 类的方法。正确导入:import java.util.List;
【解决方案2】:

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

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

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

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

【讨论】:

  • 如果您有任何进一步的说明,请告诉我。
  • 感谢您的反馈,但我认为从 catch 块返回一些内容不是一个好的编码习惯。如果我错了,请纠正我。
  • 就像我一开始说的,方法很粗糙。哈萨姆的代码对你来说很好用。请检查我发布的新方法。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    这会对你有所帮助。

     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;
    }}
    

    享受吧!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2014-06-23
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多