我使用XPather Browser检查HTML页面上的XPATH表达式 .
我的最终目标是在Selenium中使用这些表达式来测试我的用户界面 .
我有一个HTML文件,其内容与此类似:
<tr>
<td>abc</td>
<td> </td>
</tr>
我想选择一个包含字符串“
”的文本的节点 .
使用像"abc"这样的普通字符串是没有问题的 . 我使用类似于 //td[text()="abc"]
的XPATH .
当我尝试使用类似 //td[text()=" "]
的XPATH时,它什么都不返回 . 有关于“ &
”的文本是否有特殊规则?
6 回答
看来,Selenium背后的人已经解决了这个问题 . 他们定义了一些变量来明确地匹配空格 . 在我的情况下,我需要使用类似于
//td[text()="${nbsp}"]
的XPATH .我在这里转载了OpenQA关于这个问题的文本(找到here):
当我通过在两个引号之间在Windows上键入Alt 0160来输入硬编码的非破坏空间(U 00A0)时,我发现我可以进行匹配...
为我工作的特殊字符 .
根据我的理解,XPath 1.0标准不处理转义Unicode字符 . 在XPath 2.0中似乎有相应的功能,但看起来Firefox不支持它(或者我误解了一些东西) . 所以你必须使用本地代码页 . 丑陋,我知道 .
实际上,看起来标准依赖于编程语言使用XPath来提供正确的Unicode转义序列......所以,不知何故,我做了正确的事情 .
尝试使用十进制实体
 
而不是命名实体 . 如果这不起作用,您应该能够简单地使用unicode character for a non-breaking space而不是
实体 .(注意:我没有在XPather中尝试过这个,但我确实在Oxygen中尝试过 . )
请记住,在评估XPath表达式时,符合标准的XML处理器将替换除XML的五个标准引用(
&
,>
,<
,'
,"
)之外的任何实体引用,以及目标编码中的相应字符 . 鉴于这种行为,如果您想使用XML工具,PhiLho _1494445的建议是可行的方法 . 在XPath表达式中输入 
时,应将其转换为应用XPath表达式之前的相应字节序列 .我无法使用Xpather获得匹配,但以下工作对我使用Microsoft XML记事本中的纯XML和XSL文件:
返回的值是1,这是我的测试用例中的正确值 .
但是,我确实必须使用以下内容将 nbsp 声明为XML和XSL中的实体:
我不确定这对你有帮助,但我能够使用XPath表达式找到 nbsp .
编辑:我的代码示例实际上包含字符 ' ' 但JavaScript语法高亮显示将其转换为空格字符 . 不要误导!
搜索
或仅nbsp
- 你试试这个吗?