【问题标题】:.isDisplayed()--> never returns False why? in Selenium Webdriver.isDisplayed()--> 从不返回 False 为什么?在 Selenium Webdriver
【发布时间】:2018-07-09 03:54:51
【问题描述】:

.isDisplayed()--> 从不返回 False 为什么?尽管我使用的是 try catch 块,但它总是不给出这样的元素异常。

      try {
        boolean status_second= Appointment_Booking_page.second_confirmation.isDisplayed();
        System.out.println("Current Second Appointment booking status-->" + status_second);
      } 
      catch (NoSuchElementException e) {

      }

请提出相同的建议。

【问题讨论】:

  • 如果没有出现这样的元素异常,则该对象不在页面上,或者您使用了错误的定位器值。检查您的 xpath 或您使用的任何定位器。有时,元素未加载,您可能需要等待元素可见。

标签: selenium selenium-webdriver


【解决方案1】:

显示并没有给你错误,因为即使在该方法执行之前,NoSuchElementException 也会发生。 isDisplayed 用于元素存在于 DOM 中并且您需要检查它是否在 UI 中显示的情况。它从不用于检查 DOM 中是否存在元素。

【讨论】:

    【解决方案2】:

    你的问题是正确的,isDisplayed 会为所有存在的元素显示 True,其他任何东西肯定会出现 NoSuchElementException。这仅适用于 UI 中显示的元素,检查未显示的元素示例隐藏元素,或者仅在滚动后显示的元素,我相信在这些情况下它应该显示 False。

    这是另一个关于相同的问题:

    https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1880

    【讨论】:

      【解决方案3】:

      .isDisplayed() 方法从不返回 False 不是 True

      在您的情况下,.isDisplayed() 方法是通过 Appointment_Booking_page.second_confirmation 调用的,这是您可能的 策略 来定位 web 元素。由于您已适应的 定位器策略 不会唯一标识预期的 web 元素,因此(甚至在调用 .isDisplayed() 之前)NoSuchElementException 被抛出并且您的程序终止。

      值得一提的是,即使 网页 上存在 web 元素但不在 Viewport 内,.isDisplayed() 方法仍然可以返回 False

      【讨论】:

        【解决方案4】:

        isDisplayed() 是用于验证网页中是否存在 Web 元素的方法。该方法旨在从每个成功和失败的布尔值中得出结果。如果网页上存在指定的 web 元素,则该方法返回“true”值,如果网页上不存在指定的 web 元素,则返回“false”值

        【讨论】:

          【解决方案5】:

          关于为什么 isDisplayed 方法不返回 false 而是抛出 NoSuchElementException 存在很多困惑;问题在于何时使用 isDisplayed 方法的理解

          1. isDisplayed 抛出 NoSuchElementException 因为该元素不存在于 DOM 中; (尝试使用您的定位策略检查元素,您在浏览器中使用 firepath 或任何开发人员工具在浏览器中遇到上述异常,您将看到您的定位策略已找到 0 个匹配元素)

          何时使用 isDisplayed?

          .isDisplayed() 存在告诉你元素,已经被定位,即你的元素存在于 DOM 中(尝试检查元素,你应该找到匹配元素),在这页纸;即它的宽度和高度是否大于零,它 不被 CSS 等隐藏。如果元素存在于页面上,但 style="display:none;"然后 isDisplayed() 将返回 false。

          以上语句的意思是虽然你有匹配的元素,但是由于元素被 CSS 隐藏了,所以你得到了错误

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-16
            • 1970-01-01
            • 1970-01-01
            • 2023-03-25
            • 2019-02-09
            • 1970-01-01
            相关资源
            最近更新 更多