有一个带有一些html的页面:
<ul>
<li>
<div>
text1
</div>
<span>
text2
</span>
</li>
</ul>
我想通过文字在 li 中查找元素。 如果我想用xpath找到它:
“ // * [包含(text(),'text1')] / ancestor :: li”
“ text1 \ r \ ntext2”
但是,如果我尝试找到类似
[包含(text(),'text1 \ r \ ntext2')] /祖先:: li“
没有任何依据。 我在xpath之类的位置之前尝试过使用@:“ @ [contains(text(),'text1 \ r \ ntext2')] / ancestor :: li“
但是也没有结果。 我应该找到全文的元素。因为我不知道跨度和div会是什么。我不明白为什么element.Text =“ text1 \ r \ ntext2”。但是xpath“ [contains(text(),'text1 \ r \ ntext2')]”不起作用。 您有什么建议或意见吗?我很高兴看到 谢谢
答案 0 :(得分:0)
您可能需要对li执行子查询并测试子级。因此,以下情况将适用于上述情况:
//li[div[contains(text(),'text1')] and span[contains(text(), 'text2')]]
这将匹配所有具有li
元素和text {2}的div
元素。
答案 1 :(得分:-1)
您可以使用normalize-space,我想它也适合您的情况:
//*[normalize-space(text()='text1 text2')]/ancestor::li