我需要在HTML文档中找到以下“a”元素。
<a>
304897: Failing Test Case "CALM501-I20140715-0705-
<wbr/>
Add CD to Cart"
</a>
我为此目的尝试了以下xpath,但由于文本中存在“wbr”元素,因此找不到特定元素。
//a[substring-after(normalize-space(text()),': ')='Failing Test Case "CMAL501-I20140715-0705-Add CD to Cart"']
当“a”元素的文本中不包含“wbr”元素时,上述xpath会起作用。
有人可以帮我找一个合适的xpath吗?
答案 0 :(得分:0)
您可以尝试这种方式:
//a[substring-after(normalize-space(string(.)),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']
使用XPath string()
获取标记内所有文本节点的组合值。给出输入标记的一个例子,这个XPath:
substring-after(normalize-space(string(//a)),': ')
..将返回:
Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"
更新:
原来normalize-space(string(.))
返回与normalize-space(.)
相同的值,因此这样可以正常工作:
//a[substring-after(normalize-space(.),': ')='Failing Test Case "CALM501-I20140715-0705- Add CD to Cart"']
所以这不是使用string()
的问题,而是使用text()
的问题,因为后者会单独为您带来每个文本节点,并可能导致意外行为,如您的情况所示。