Select 带有文本的节点使用 XPath 而不管 CasperJS 中的空格
Select node with text using XPath regardless of whitespace in CasperJS
我正在使用 CasperJS 并想单击具有特定浮点值的 table 元素 - 但前面有一些空格,我不知道其中有多少。
例如:
<td class="narrow value ng-binding"><i class="fa" ng-class="{...}"></i> 1,45</td>
我尝试通过以下方式定位此元素:
this.click(x('//*[text()="1,45"]'));
但我得到:
Cannot dispatch click event on nonexistent selector: XPath expression:
'//*[text()="1,45"]'
谁能指出如何忽略开头的空格,或者为什么这不起作用?
在字符串的开头和结尾使用 normalize-space()
到 'ignore' 个空格:
//*[normalize-space(text())="1,45"]
或使用以下形式以防目标文本节点可能不是其父元素中的第一个子文本节点:
//*[text()[normalize-space(.)="1,45"]]
来自 MDN :
The normalize-space
function strips leading and trailing white-space from a string, replaces sequences of whitespace characters by a single space, and returns the resulting string.
我正在使用 CasperJS 并想单击具有特定浮点值的 table 元素 - 但前面有一些空格,我不知道其中有多少。
例如:
<td class="narrow value ng-binding"><i class="fa" ng-class="{...}"></i> 1,45</td>
我尝试通过以下方式定位此元素:
this.click(x('//*[text()="1,45"]'));
但我得到:
Cannot dispatch click event on nonexistent selector: XPath expression: '//*[text()="1,45"]'
谁能指出如何忽略开头的空格,或者为什么这不起作用?
在字符串的开头和结尾使用 normalize-space()
到 'ignore' 个空格:
//*[normalize-space(text())="1,45"]
或使用以下形式以防目标文本节点可能不是其父元素中的第一个子文本节点:
//*[text()[normalize-space(.)="1,45"]]
来自 MDN :
The
normalize-space
function strips leading and trailing white-space from a string, replaces sequences of whitespace characters by a single space, and returns the resulting string.