【问题标题】:How to verify web element presence on the page using selenium 2如何使用 selenium 2 验证页面上的 web 元素是否存在
【发布时间】:2013-07-04 12:18:42
【问题描述】:

我正在尝试使用 selenium web-driver 2 工具进行测试。

应用程序有元素,这些元素的存在是不可预测的。好的。在大多数情况下,它们出现在页面上。但在某些情况下,它们不是。下面的方法点击不可预知的元素

public void clickTypeAheadDropdown(String typeAheadItem) {
    String xPathItemSelector = "//div[@class='gwt-SuggestBoxPopup']//td[text()='" + typeAheadItem + "']";
    WebElement dropDownItem = driver.findElement(By.xpath(xPathItemSelector));
    if (dropDownItem.isDisplayed() ) {
        dropDownItem.click();
    };

}

但是当元素不存在时它会失败。异常由 driver.findElement(By.xpath(xPathItemSelector)

方法引发

你知道,我该如何测试页面上是否存在元素?

附:我认为,捕获“未找到元素”异常不是一个好主意,因为它会在测试超时时引发

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    我通常使用下面的方法来测试一个元素是否存在。

    public boolean isElementPresent(By element) {
       try {
           driver.findElement(element);
           return true;
       } catch (NoSuchElementException e) {
           return false;
       }
    }
    

    等待时间也可以在WebDriver上配置:

    webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    

    我不知道有任何其他方法可以做到这一点。由于您的页面可能会在不可预知的时间内加载,因此您必须等待并使用超时。

    【讨论】:

      【解决方案2】:

      您也可以使用 FindElements 来做到这一点:

          /// <summary>
          /// Checks if the specified element is on the page.
          /// </summary>
          public static bool IsElementPresent(this IWebDriver driver, By element)
          {
              if (driver.FindElements(element).Count > 0)
                  return true;
              else
                  return false;
          }
      
          /// <summary>
          /// Checks if the specified element is on the page and is displayed.
          /// </summary>
          public static bool IsElementDisplayed(this IWebDriver driver, By element)
          {
              if (driver.FindElements(element).Count > 0)
              {
                  if (driver.FindElement(element).Displayed)
                      return true;
                  else
                      return false;
              }
              else
              {
                  return false;
              }
          }
      
          /// <summary>
          /// Checks if the specified element is on the page and is enabled.
          /// </summary>
          public static bool IsElementEnabled(this IWebDriver driver, By element)
          {
              if (driver.FindElements(element).Count > 0)
              {
                  if (driver.FindElement(element).Enabled)
                      return true;
                  else
                      return false;
              }
              else
              {
                  return false;
              }
          }
      

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        要检查元素是否存在,您可以使用以下代码:

        if(driver.findElements(By.xpath("value")).size() != 0){
        System.out.println("Element is Present");
        }else{
        System.out.println("Element is Absent");
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-22
          • 1970-01-01
          • 2014-01-05
          • 2014-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多