问题描述
我一直在寻找有关如何找到具有类且包含文本的元素的答案。
我有两个答案。
-
//div[@class='credit_summary_item' and contains(text(),'Professor']
: 如HTML XPath Searching by class and text -
//div[contains(@class,'credit_summary_item') and contains(.,'Professor')]
: 如XPath to match @class value and element value?
对我来说,只有第二个答案有效。 谁能解释“包含文本”部分的区别?由于两个答案都没有提及。
解决方法
要进行演示,请考虑以下HTML:
<div class="credit_summary_item">Professor</div>
有:
- 仅class属性的一个值,即
credit_summary_item
。 - 内部文本(即教授)不包含开头和结尾空格。
因此,要找到此元素,您可以使用以下任一解决方案:
-
使用
text()
://div[@class='credit_summary_item' and text()='Professor']
-
使用
contains()
://div[@class='credit_summary_item' and contains(.,'Professor')]
此用例
但是在您的用例中,似乎contains(@class,'credit_summary_item')
起作用了,这意味着该元素具有多个类。因此,除了credit_summary_item
之外,还有一些其他值作为类属性存在。
就我而言,html 如下所示:
<ki5-tab text="Super Boal" ki5-tab="" slot="default-1" selected="true"></ki5-tab>
xpath :
//ki5-tabcontainer/ki5-tab[contains(@text,'Boal')]