Selenium跳过隐藏属性的html元素

时间:2017-05-24 21:03:29

标签: java selenium hidden

我正在使用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'] ...

但没有运气。请提供有关选择器的任何想法/文档的建议。

2 个答案:

答案 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");
      }