.isDisplayed() - >永远不会返回False为什么?在Selenium Webdriver中

时间:2018-01-30 05:39:47

标签: selenium selenium-webdriver

.isDisplayed() - >永远不会返回False为什么?虽然我使用的是try catch block,但它总是给出No Such Element Exception。

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

      }

请建议同样的。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

True .isDisplayed()方法永远不会返回 False

在您的情况下,通过.isDisplayed()调用Appointment_Booking_page.second_confirmation方法,这是您可能的策略来查找webelement。作为定位器策略,您已经调整了并不唯一地标识预期的webelement(即使在调用.isDisplayed()之前),也会抛出NoSuchElementException并且您的程序终止。

值得一提的是,即使网页上存在webelement 但不在Viewport内,.isDisplayed()方法仍然可以返回 False < / em>的

答案 2 :(得分:0)

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

答案 3 :(得分:0)

为什么isDisplayed方法不返回false而是抛出NoSuchElementException,这引起了很多困惑;问题在于了解何时使用isDisplayed方法

  1. isDisplayed引发NoSuchElementException,因为DOM中不存在该元素。 (尝试使用您的定位策略检查元素,使用firepath或浏览器中的任何开发人员工具在浏览器中获取上述异常,您会发现您的定位策略找到了0个匹配元素)

何时使用isDisplayed?

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

以上声明的意思是,尽管您具有匹配的元素,但是由于该元素被CSS隐藏,因此您会得到错误的信息

答案 4 :(得分:-1)

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

以下是另一个有关同样的问题:

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