【问题标题】:Using XPATH to search text containing whitespace使用 XPATH 搜索包含空格的文本
【发布时间】:2014-06-23 09:08:48
【问题描述】:

<tr>
  <td class="f4 trimJustl"
      valign="middle"
      style="color:#ffffff;"
      artcolor="#ffffff">Create Network Container</td>
</tr>

我想找到文本等于创建网络容器td元素。 我创建了 XPath

//td[text()='Create Network Container']

但它不起作用。我也试过了

//td[contains(text(),'Create Network Container')]

但这对我也不起作用。

【问题讨论】:

  • 我试过 //td[contains(text(),'Network')] 有效。但我想在文本中使用所有三个词,即“创建网络容器”
  • 鉴于您正在使用的 HTML 标记的相关部分与此处发布的完全相同,您的 XPath 应该与 &lt;td&gt; 元素匹配

标签: xpath


【解决方案1】:

它通过剪切和粘贴您发布的示例来工作。您的原始来源可能包含不匹配的制表符或其他空白字符。以下是一些替代方案:

1) 规范化空格

//td[normalize-space(text()) = 'Create Network Container']

2) 使用td 的字符串值进行比较(这也将匹配Create &lt;b&gt;Network&lt;/b&gt; Container

//td[normalize-space(.) = 'Create Network Container']

3) 分别检查每个单词(忽略单词顺序)

//td[contains(text(), 'Create') and contains(text(), 'Network') and contains(text(), 'Container')]

4) 去除空格、制表符、换行符、换行符、回车并比较结果:

//td[translate(text(), "  &#13;&#10;&#09;&#xa;", "") = 'CreateNetworkContainer']

【讨论】:

  • +1 投票。正在处理我使用“包含”的 xpath,当我有连字符时,它没有在屏幕上找到文本。规范化空间帮助了我!谢谢!
【解决方案2】:

试试this

//td[matches(text(), '\s*Create\s+Network\s+Container\s*')]

老实说,这在我检查过的几个评估员中对我有用:

 //td[text() = 'Create Network Container']

之前的尝试是匹配所有可能存在的类似空格的字符(也许它不仅仅是一个空格,这就是为什么这个最简单的解决方案不能给你正确的结果。

【讨论】:

猜你喜欢
  • 2010-09-19
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
相关资源
最近更新 更多