Xpather在firefox 3.5上不计算XPath,但在firefox 3.6上运行良好
我正在开发一个richface应用程序,并尝试在firefox3.5上使用xpath评估以下xpath。XPather不计算任何xpath,尽管相同的xpath在firefox 3.6上工作得非常好。 我正在测试的页面类似于-Xpather在firefox 3.5上不计算XPath,但在firefox 3.6上运行良好,xpath,xml-namespaces,Xpath,Xml Namespaces,我正在开发一个richface应用程序,并尝试在firefox3.5上使用xpath评估以下xpath。XPather不计算任何xpath,尽管相同的xpath在firefox 3.6上工作得非常好。 我正在测试的页面类似于- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="http://openfaces.org">
<head>
<script src="some source" type="text/javascript"></script>
<script src="some source" type="text/javascript"></script>
<link class="component" href="some source" rel="stylesheet" type="text/css" />
<link class="component" href="some source"
media="rich-extended-skinning" rel="stylesheet" type="text/css" />
<link class="component" href="some source" rel="stylesheet" type="text/css" />
<script type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script>
<link type="text/css" href="some source" rel="stylesheet"/>
<body class="Banner" onresize="setTreePnlHeight()" onload="loadApp();">
<input type="hidden" id="dsTreeScrollPos" value="0" />
<div id="a" class="application"><form id="form" name="form" method="post" action="...">
....
</body>
</html>
window.RICH\u FACES\u EXTENDED\u SKINNING\u ON=true;
....
如果我使用xpather(v1.4.5)来计算FF3.5上的简单xpath,比如//input
,它不会返回任何结果。命名空间是否导致此问题?如何在FF3.5上验证xpath
FF3.5上的简单xpath,如//input
,它
不会返回任何结果。是
导致此问题的命名空间
对。如果您查看文档,就会发现其中有一个默认名称空间定义
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="http://openfaces.org">
这意味着
//input
正在查找没有名称空间的元素
,而您应该查找中的
http://www.w3.org/1999/xhtml
名称空间。您需要定义该名称空间并将其绑定到前缀,然后在XPath中使用该前缀。像//x:input
文档是如何以text/html、text/xml、application/xml或application/xhtml+xml的形式提供的?此文档以text.html的形式提供。内容=文本/html;charset=iso-8859-1是否有出现问题的文档的URL?抱歉,Martin,此处无法指定URL:-(抱歉我的无知..但我是新手。您能告诉我如何定义名称空间并将其绑定到前缀吗?我无法修改原始文档。我需要能够让它与XPather一起工作以测试应用程序(并将此xpath与selenium一起使用)。我没有使用XPather,因此我不能说它是否有手动注册命名空间的特定过程。建议它使用文档中定义的相同前缀,并为默认命名空间中的元素(没有前缀)使用前缀default
。因此,类似于//default:input
的内容应该适用于您的情况。快速谷歌搜索似乎提示Selenium不支持名称空间,这对于XML处理来说是一个巨大的缺陷。@Santosh K:我忘了提到,还有一个常用的解决方法,用于选择名称空间元素,但不知道名称空间ol:使用谓词和local-name()
函数。在这种情况下,//input
将被写为//*[local-name()='input']
您建议的解决方法对我有效。通过指定谓词和local-name()函数,结果将在Xpather中显示。