[英]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: none
或opacity: 0
,我在另一个问题中找到它: 如何检查元素是否可见与WebDriver
要检查页面上是否显示了任何元素,即使根据提供的HTML DOM ,可见的<span>
不在父节点中位于第一个位置,您也可以使用以下解决方案:
使用XPath :
@driver.find_element(:xpath,"//span[@class='some class']").displayed?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.