无论CasperJS中是否有空格,都使用XPath选择带有文本的节点

时间:2016-04-14 11:15:37

标签: javascript xpath casperjs removing-whitespace

我使用CasperJS并希望点击具有特定浮动值的表格元素 - 但是前面有一些空格,我不知道它有多少。

例如:

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

我尝试通过执行以下操作来定位此元素:

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

但我明白了:

  

无法在不存在的选择器上调度click事件:XPath表达式:   &#39; // * [文本()=&#34; 1,45&#34;]&#39;

有人可以指出如何忽略开头的空格,或者为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

使用normalize-space()来“忽略”字符串开头和结尾的空格:

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

或使用以下表单,以防目标文本节点可能不是其父元素中的第一个子文本节点:

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

来自MDN

  

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