首页 文章

XPath包含“\ r \ n”在页面上找不到任何元素

提问于
浏览
1

有一个页面包含一些html:

<ul>
<li>
    <div>
          text1 
    </div>
    <span>
        text2
    </span>
</li>
</ul>

而且我想逐字逐句地找到 li . 如果我想用xpath找到它:

“// * [contains(text(),'text1')] / ancestor :: li”

  • 元素成立并且这些文本相同

“text1 \ r \ n \ text2”

但如果我正在尝试找到它

[contains(text(),'text1 \ r \ n \ text2')] / ancestor :: li“

没有成立的元素 . 我尝试在xpath之前使用@,如:“@ [contains(text(),'text1 \ r \ n \ text2')] / ancestor :: li”

但也没有结果 . 我应该找到全文的元素 . 因为我不知道 Span 会是什么,div会是什么 . 我不明白为什么element.Text =“text1 \ r \ n \ text2” . 但是xpath“[contains(text(),'text1 \ r \ n \ n \ n \ n \ n \ n \文字'')]”“不起作用 . 你有什么建议或意见吗?我很高兴看到谢谢你

3 回答

  • 0

    您可能需要为li执行子查询并测试子项 . 因此,以下内容适用于上述场景:

    //li[div[contains(text(),'text1')] and span[contains(text(), 'text2')]]
    

    这将匹配所有 li 谁拥有包含text1的 div 元素以及包含text2的 span 元素 .

  • -1

    你可以使用normalize-space,我想它也适合你的情况:

    //*[normalize-space(text()='text1 text2')]/ancestor::li
    
  • 0

    尝试以下XPath来选择所需的元素:

    //li[normalize-space()='text1 text2']
    

相关问题