【问题标题】:Selenium skip html element with hidden attributeSelenium 跳过具有隐藏属性的 html 元素
【发布时间】:2017-05-25 05:55:48
【问题描述】:

我在 java 中使用 selenium,我正在尝试测试搜索场景。在我执行搜索后,不适合搜索关键字的 html 元素被 hidden 属性隐藏(参见下面的示例,第一个元素与搜索条件不匹配,第二个元素匹配):

<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']...

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

【问题讨论】:

    标签: java selenium hidden


    【解决方案1】:

    您需要在这里使用 getAttribute 函数。这个调用的作用是如果它被设置则返回一个属性值,否则返回 null。

    您可以使用 FindElements 传递您的选择器,并遍历找到的元素并仅返回其中的元素

    getAttribute("hidden") != null
    

    希望这会有所帮助。

    【讨论】:

      【解决方案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");
            }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 2011-10-14
        • 1970-01-01
        相关资源
        最近更新 更多