我正在使用selenium和java,我正在尝试测试搜索方案。执行搜索后,不包含搜索关键字的html元素将隐藏隐藏属性(请参阅下面的示例,第一个元素与搜索条件不匹配,第二个元素与搜索条件不匹配):
<ion-item-sliding class="item-wrapper" hidden="">
<button class="item item-block item-md" ion-item="">
<p>I am hidden</p>
</button>
</ion-item-sliding>
<ion-item-sliding class="item-wrapper">
<button class="item item-block item-md" ion-item="">
<p>I am not</p>
</button>
</ion-item-sliding>
我的目标是在可见元素中找到文本(示例中的第二个)。当我使用简单选择器
时//按钮[@ class ='item item-block item-md']
隐藏元素被找到,所以我正在使用像这样的选择器
// ion-item-sliding [@ class ='item-wrapper'而不是 @ type ='hidden'] //按钮[@ class ='item item-block item-md'] ...
但没有运气。请提供有关选择器的任何想法/文档的建议。
答案 0 :(得分:2)
这里需要的是使用getAttribute函数。这个调用的作用是,如果它设置则返回一个属性值,否则返回null。
您可以使用FindElements传递您的选择器,并迭代找到的元素并仅返回其中的那个
LinAlgError: 0-dimensional array given. Array must be at least two-dimensional
希望这有帮助。
答案 1 :(得分:2)
使用isDisplayed()方法在获取文本之前查看该元素是否在浏览器上可见,如下所示
List <WebElement> elements = driver.findElements(By.cssSelector(".item.item-block.item-md")); for(WebElement e:elements) { if(e.isDisplayed()) String text = e.getAttribute("innerText"); }