【问题标题】:visibilityOfElementLocated Vs visibilityOfvisibilityOfElementLocated 与 visibilityOf
【发布时间】:2017-06-21 15:58:01
【问题描述】:

当我尝试运行以下代码时,visibilityOfElementLocated 工作得非常好,webdriver 在给定的时间内等待元素。

dr.get("http://www.seleniumframework.com/Practiceform/");
WebDriverWait wait=new WebDriverWait(dr,30);
WebElement we = wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Element5")));

但是如果我使用visibilityOf,同样的方式,它给了我

NoSuchElementException

WebElement we = wait.until(ExpectedConditions.visibilityOf(dr.findElement(By.linkText("Element3"))));

你能解释一下为什么我会得到这个异常吗?

【问题讨论】:

    标签: java selenium selenium-webdriver webdriver


    【解决方案1】:

    但是如果我使用“visibilityOf”,同样的方式,它会给我 NoSuchElementException

    实际上,您通过这行代码dr.findElement(By.linkText("Element3"))得到Exception,在您提供的代码中,这行将首先执行,如果找到元素,则ExpectedConditions.visibilityOf() callable 将执行。

    仅供参考,WebDriver.findElement() 要么抛出异常,要么返回 WebElement

    visibilityOfElementLocated VS visibilityOf :-

    • visibilityOfElementLocated 用于检查元素是否存在于 页面的 DOM 上并且可见。意味着它使用 By 对象而不是带有可调用函数的 WebElement 对象首先找到该元素,然后检查该元素是否可见。

    • visibilityOf 用于检查已知存在于页面的 DOM 上的元素是否可见。表示您已经找到该元素,只需检查该可见性。

    【讨论】:

    • 这个答案帮了很多忙。谢谢。
    【解决方案2】:

    根据this

    visibilityOf:不检查 元素存在,正如错误所解释的那样。

    visibilityOfElementLocated:检查元素是否存在以及可见。为了检查可见性,它确保元素的高度和宽度大于 0。

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多