Eti*_*nne 5 xpath selenium-webdriver
我有这个 html 代码
<div>
<span>test</span>
foo
<br />
bar
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试直接在 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
Run Code Online (Sandbox Code Playgroud)
似乎 text() 在返回值而不是搜索值时仅返回索引 [2] 。
我用 java/selenium 和 firepath(一个用于测试 xpath 的 firebug 插件)测试了这段代码。
任何人都知道如何从文本中获取 div,如果可能,不使用 contains,因为它们不准确。
谢谢你。
您可以尝试使用以下XPath表达式来匹配div其文本所需的内容:
//div[normalize-space()="test foo bar"]
Run Code Online (Sandbox Code Playgroud)
请注意,删除空格的函数实际上称为normalize-space(),但不是sanitize-space()
更新
如果您只想使用"foo"和"bar"文本节点,请尝试
//div[concat(normalize-space(text()[2]), normalize-space(text()[3]))="foobar"]')
Run Code Online (Sandbox Code Playgroud)
或者是否单独使用它们
//div[normalize-space(text()[2])='foo' and normalize-space(text()[3])='bar']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3429 次 |
| 最近记录: |