【问题标题】:How can you view the output XPATH functions like normalize-space()?如何查看像 normalize-space() 这样的输出 XPATH 函数?
【发布时间】:2015-02-20 21:08:39
【问题描述】:

假设我有以下 HTML:

<div class="instruction" id="scan-prompt">
    <span class="long instruction">Scan </span>
    <span id="slot-to-scan">A-2</span>
    <span class="long instruction">&nbsp;to prep</span>
</div>

我正在尝试编写这样的 XPATH 选择器

//div[@id='scan-prompt' and normalize-space()='Scan A-2 to prep']

有没有办法查看归一化空间输出的实际情况?

我知道你可以在 chrome 调试器中执行 $x("//div[@id='scan-prompt']),但我不知道如何从那里看到 normalize-space 的输出。

【问题讨论】:

  • 我试过用 Chrome 的控制台,它似乎只是支持做$x("normalize-space(//div[@id='scan-prompt'])")
  • 我不知道它是这样工作的。成功了。

标签: google-chrome firefox xpath


【解决方案1】:

为什么不能简单地使用路径表达式

normalize-space(//div[@id='scan-prompt'])

看看标准化的字符串值是什么样的?除此之外,normalize-space() 所做的正是:

  • 从字符串参数中删除任何前导或尾随空格
  • 将任何空白字符序列折叠成一个空白字符

如果将元素节点作为参数传递(就像您的原始表达式一样),该函数会评估该元素节点的 字符串值。元素节点的字符串值是其所有后代文本节点的串联。


normalize-space(//div[@id='scan-prompt']) 的结果是,给定您显示的输入(标有“+”的空格):

Scan+A-2+to+prep

不调用normalize-space(),例如string(//div[@id='scan-prompt'])

+
Scan+
A-2+
to+prep+
+

因此,只需使用除了返回字符串值或规范化字符串值之外什么都不做的路径表达式。通过using an XPath expression inside $x() 使用谷歌浏览器。

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 2019-04-13
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2017-05-21
    • 2012-07-07
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多