使用XPath选择包含文本的节点,而不考虑CasperJS中的空白

Select node with text using XPath regardless of whitespace in CasperJS

本文关键字:不考虑 CasperJS 空白 节点 XPath 选择 包含 文本 使用      更新时间:2023-09-26

我正在使用CasperJS,希望单击一个具有特定浮点值的表元素,但前面有一些空白,我不知道有多少。

例如:

<td class="narrow value ng-binding"><i class="fa" ng-class="{...}"></i>           1,45</td>

我试着通过以下方式瞄准这个元素:

this.click(x('//*[text()="1,45"]'));

但我得到了:

无法在不存在的选择器上分派单击事件:XPath表达式:'//*[text()="1,45"]'

有人能指出如何在开始时忽略空白,或者为什么这不起作用吗?

使用normalize-space()"忽略"字符串开头和结尾的空白:

//*[normalize-space(text())="1,45"]

或者在目标文本节点可能不是其父元素中的第一个子文本节点的情况下使用以下形式:

//*[text()[normalize-space(.)="1,45"]]

来自MDN:

normalize-space函数从字符串中去除前导和尾随空格,用单个空格替换空白字符序列,并返回结果字符串。

相关文章: