繁体   English   中英

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

[英]How can I find visible only elements on a page with Selenium Webdriver?

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

UPDATE

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>

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

.hidden { 
   display: none;
}

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

UPDATE

如果您无法更改HTML,则可以使用element.isDisplayed()函数,如果元素具有display: none ,则返回false display: noneopacity: 0 ,我在另一个问题中找到它: 如何检查元素是否可见与WebDriver

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

  • 使用XPath

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM