对于网页上的HTML表格,我使用以下XPath:
/tr/td[2]/.[contains(text(),'Some')]
这在所有情况下都可以正常工作,但它也符合'Something'。
/tr/td[2]/.[normalize-space(text()) = 'Some']
在所有情况下都不起作用。 有人可以评论后者的XPath有什么问题吗?
答案 0 :(得分:0)
您的问题可能不会涉及normalize-space()
,而是两个常见的文字/字符串匹配区域之一:
text()
匹配文本节点。
//td[contains(text(), 'Some')]
将与此匹配
<td>Some text</td>
但不是
<td><b>Some text</b></td>
要匹配后者,请改用//td[contains(., 'Some')]
。这将检查td
的字符串值是否包含字符串&#34; Some&#34;。
有关详细信息,请参阅XPath text() = is different than XPath . =
还要注意contains()
测试子字符串包含。如果您想要字符串相等,请对字符串使用=
运算符:
//td[. = 'Some']
将匹配
<td><b>Some</b></td>
但不是
<td><b>Some text</b></td>
请注意区别。