使用类名并包含文本的 XPath

XPath using classname and contains text

我正在寻找有关如何查找具有 class 并包含文本的元素的答案。

我有两个答案。

对我来说,只有第二个答案有效。 任何人都可以解释 'contains text' 部分的区别吗?因为两个答案都没有提到它。

要进行演示,请考虑以下内容 HTML:

<div class="credit_summary_item">Professor</div>

有:

  • class 属性只有一个值,即 credit_summary_item
  • 并且 innerTextProfessor 不包含前导和尾随空格。

因此,要定位此元素,您可以使用以下任一解决方案:

  • 使用text():

    //div[@class='credit_summary_item' and text()='Professor']
    
  • 使用contains():

    //div[@class='credit_summary_item' and contains(., 'Professor')]
    

这个用例

但在您的用例中似乎 contains(@class, 'credit_summary_item') 有效,这意味着该元素有多个 class。因此,除了 credit_summary_item 之外,还有一些其他值作为 class 属性存在。

在我的例子中,html 看起来像这样:

<ki5-tab text="Super Boal" ki5-tab="" slot="default-1" selected="true"></ki5-tab>

xpath :

//ki5-tabcontainer/ki5-tab[contains(@text,'Boal')]