我得到了一个页面,其中有几个隐藏跨度相同的班级。我需要检查,如果其中之一显示在页面上。我尝试使用@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>
答案 0 :(得分:1)
除了使用style="display: none"
之外,您还可以使用CSS类来不显示以下元素:
.hidden {
display: none;
}
现在您可以检查元素是否具有此类。
更新
如果您无法更改HTML,则可以使用函数element.isDisplayed()
,如果元素具有display: none
或opacity: 0
,则返回false,我在另一个问题中发现了它:{ {3}}
答案 1 :(得分:0)
要检查页面上是否显示了任何元素,即使您提供的HTML DOM的可见<span>
不在父节点中位于第一个,您可以使用以下解决方案:
使用 XPath :
@driver.find_element(:xpath,"//span[@class='some class']").displayed?