使用xpath(Selenium Webdriver)确认嵌套的webelement存在

时间:2019-02-19 21:49:06

标签: selenium xpath webdriver

这是HTML设计,我正在尝试查看是否为特定文本“祝你好运哈利”显示 <i class="fas fa-lock"></i>

如何使用xpath识别多个Webelements?

我可以使用xpath分别识别这些webelements,但是如何确保它们嵌套?

 <div class="card">

  <div class="overlayBg">   

   <div class="duration_notif">22:33</div>
     <i class="fas fa-lock"></i>
   </div>

   <div class="card-body">
     <h5 class="card-title">
      <div class="LinesEllipsis  ">
        <div>Good luck Harry</div>
      </div>
     </h5>
   </div>
</div>

我需要验证两个网络元素是否相互嵌套。

我在Java中使用pagefactory和硒。

1 个答案:

答案 0 :(得分:1)

嵌套<div>Good luck Harry</div>是另一个div的子代,而另一个h5<div class="card-body">的子代,而//div[@class="card-body"]/h5[@class="card-title"]/div[contains (@class, "LinesEllipsis")]/div /的子代?

<div class="overlayBg">

在xpath中,<div class="card-body">表示直接后代-该节点必须是另一个节点的第一级子节点。
当您使用此xpath处理元素时,实际上会发现它具有此祖先结构。

div/div//div[@class="card-body" and preceding-sibling::div[@class="overlayBg"]]/h5[@class="card-title"]/div[contains (@class, "LinesEllipsis")]/div 的意义上有一个共同的父母-preceding-sibling

    gridOptions.api.forEachNode(node => {
        if (node.childIndex >= startIndex && node.childIndex < endIndex) {
            node.setSelected(true)
        }
    });

您将从公共父节点开始,并用setSelected轴扩展谓词-这意味着“必须存在与该条件匹配的同级节点”;并且处于同一级别,这意味着这两个将共享其父节点。