使用 br 从文本中查找 xpath

2024-01-11

我有这个html代码

<div>
  <span>test</span>
  foo
  <br />
  bar
</div>

我试图用直接在 div 内的文本找到它(所以 foo bar)。

通常,我会去 //div[normalize-space(text()) = 'foobar'],但由于
它不工作。我尝试添加空格或特殊字符,或修剪它们,但似乎没有任何效果。

从测试中我看到

//div/text() = foo bar
//div/text()[1] = foo
//div/text()[2] = bar
//div[text()[1] = foo] = the div
//div[text()[2] = bar] = nothing

看来 text() 在返回值时仅返回索引[2],而不是用于搜索值。

我用 java / selenium 和 firepath (一个用于测试 xpath 的 firebug 插件)测试了这段代码。

任何人都知道如何从文本中获取 div,并且如果可能的话,不使用 contains,因为它们不准确。

谢谢。


您可以尝试使用下面的XPath表达:

//div[normalize-space()="test foo bar"]

请注意,实际上调用了删除空格的函数normalize-space() https://developer.mozilla.org/en-US/docs/Web/XPath/Functions/normalize-space, 但不是sanitize-space()

Update

如果您只想使用"foo" and "bar"文本节点,然后尝试

//div[concat(normalize-space(text()[2]), normalize-space(text()[3]))="foobar"]')

或者是否单独使用它们

//div[normalize-space(text()[2])='foo' and normalize-space(text()[3])='bar']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 br 从文本中查找 xpath 的相关文章