XPath将元素中的所有文本作为一个值获取,删除<;wbr/>;要素
我需要在HTML文档中找到以下“a”元素XPath将元素中的所有文本作为一个值获取,删除<;wbr/>;要素,xpath,Xpath,我需要在HTML文档中找到以下“a”元素 <a> 304897: Failing Test Case "CALM501-I20140715-0705- <wbr/> Add CD to Cart" </a> 当“a”元素的文本中不包含“wbr”元素时,上面的xpath就会起作用 有人能帮我找到一个合适的xpath吗?您可以这样尝试: //a[substring-after(normalize-space(string(.)),': ')='Failing T
<a>
304897: Failing Test Case "CALM501-I20140715-0705-
<wbr/>
Add CD to Cart"
</a>
当“a”元素的文本中不包含“wbr”元素时,上面的xpath就会起作用
有人能帮我找到一个合适的xpath吗?您可以这样尝试:
//a[substring-after(normalize-space(string(.)),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']
使用XPathstring()
获取标记中所有文本节点的组合值。下面是一个示例,说明您发布的输入标记,XPath:
substring-after(normalize-space(string(//a)),': ')
…将返回:
Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"
更新:
原来规范化空间(字符串(.))
返回的值与规范化空间(.)
返回的值相同,因此这也可以正常工作:
//a[substring-after(normalize-space(.),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']
因此,这不是使用
string()
的问题,而是不使用text()
的问题,因为后者会分别为您带来每个文本节点,并且可能会导致不希望出现的行为,就像您在这里遇到的情况一样。事实上规范化空间(.)
返回与规范化空间(string(.)相同的结果
因此表达式可以进一步缩短。但关键是:您几乎不应该使用text()
@MichaelKay谢谢,我以前没有完全意识到这一点
//a[substring-after(normalize-space(.),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']