首页 > 解决方案 > XPath 包含“\r\n”在页面上找不到任何元素

问题描述

有一个带有一些html的页面:

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

我想逐个文本查找元素到li中。如果我试图用 xpath 找到它:

"//*[包含(text(),'text1')]/ancestor::li"

“文本1\r\n文本2”

但如果我试图找到它

[包含(text(),'text1\r\ntext2')]/ancestor::li"

没有建立任何元素。我尝试在 xpath 之前使用@,例如:"@[contains(text(),'text1\r\ntext2')]/ancestor::li"

但也没有结果。我应该找到包含整个文本的元素。因为我不知道 span 中会出现什么,div 中会出现什么。我不明白为什么 element.Text = "text1\r\ntext2"。但是 xpath "[contains(text(),'text1\r\ntext2')]" 不起作用。您有什么建议或意见吗?我会很高兴看到谢谢

标签: c#htmlseleniumselenium-webdriverxpath

解决方案


您可能需要为 li 执行子查询并测试孩子。因此,以下内容适用于上述情况:

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

这将匹配所有li具有div包含 text1 的span元素和包含 text2 的元素的人。


推荐阅读