如何使用Selenium Webdriver在页面上查找仅可见元素?

时间:2018-11-29 11:28:17

标签: ruby selenium-webdriver

我得到了一个页面,其中有几个隐藏跨度相同的班级。我需要检查,如果其中之一显示在页面上。我尝试使用@driver.find_element(:class, 'some class').displayed?,但是在可见范围不是首先在DOM上使用该类时,它返回false。有什么办法可以解决吗?

更新

HTML

<html>
   <head></head>
   <body>
      <div class="span1" style="display: none;">
        <span class="some class">Some Error</span>
      </div>
      <div class="span2" style="display: none;">
        <span class="some class">Some Error</span>
      </div>
      <div class="span3" style>
        <span class="some class">Some Error</span>
      </div>
   </body>
 </html>

2 个答案:

答案 0 :(得分:1)

除了使用style="display: none"之外,您还可以使用CSS类来不显示以下元素:

.hidden { 
   display: none;
}

现在您可以检查元素是否具有此类。

更新

如果您无法更改HTML,则可以使用函数element.isDisplayed(),如果元素具有display: noneopacity: 0,则返回false,我在另一个问题中发现了它:{ {3}}

答案 1 :(得分:0)

要检查页面上是否显示了任何元素,即使您提供的HTML DOM的可见<span>不在父节点中位于第一个,您可以使用以下解决方案:

  • 使用 XPath

    @driver.find_element(:xpath,"//span[@class='some class']").displayed?