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

问题描述 投票:1回答:1

所以这是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>

如果它们彼此嵌套,我需要验证两个webelements。

我正在使用带有Java的pagefactory和selenium。

selenium xpath webdriver
1个回答
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

在xpath中,/表示直接下降 - 节点必须是另一个节点的第一级子节点。 当您使用此xpath处理元素时,通过它找到它,您将保证它具有此祖先结构。

嵌套在意义上<div class="overlayBg"><div class="card-body">有一个共同的父母 - 那div

/div//div[@class="card-body" and preceding-sibling::div[@class="overlayBg"]]/h5[@class="card-title"]/div[contains (@class, "LinesEllipsis")]/div

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

© www.soinside.com 2019 - 2024. All rights reserved.