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

时间:2018-12-10 07:49:12

标签: c# html selenium selenium-webdriver xpath

有一个带有一些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')]”不起作用。 您有什么建议或意见吗?我很高兴看到 谢谢

2 个答案:

答案 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