2014-11-14 58 views
1

我试图通过在Selenium API上使用Xpath在网页上查找元素,但它看起来像Selenium上的Xpath由于XHTML命名空间而找不到元素。 有没有办法在Selenium上用XHTML查找元素?在Selenium API上使用XHTML命名空间的Xpath Java

这里是我的问题的个例:

<document> 
<xhtml:html xmlns="http://www.w3.org/1999/xhtml"> 
<xhtml:head> 
<xhtml:body onload="initialiser();"> 
<xhtml:div align="center"> 
<xhtml:div align="left"> 
</xhtml:html> 
</document> 

我想找到我的元素不指定一个像// XHTML命名空间:DIV 其实,我只是想使用XPath,如:// DIV

+0

你想在这里找到哪个元素? – Saifur 2014-11-14 14:15:54

回答

-1

您可以使用通配符作为命名空间。一些如://*:div[1]会返回第一个div元素。

+1

不,这只适用于XPath 2.0。 Selenium支持浏览器中的任何内容,它目前是XPath 1.0。 – Abel 2015-09-17 16:41:22

-1

有两种方法写的XPath任何webElement:
1:写绝对XPATH
2:写相关的XPath

如果你写你的HTML层次进行任何absoulte XPath和那就是当你需要// xhtml ... 但是如果你编写相对的xpaths,你不需要定义精确的html层次结构

所以,假设你想要xpath识别左边的div - // div [@ align = 'left']

+1

这是如何帮助提问者? OP显然对XPath没有任何问题。此外,'// xhtml'不会**需要绝对层次结构,并且坦率地说,相对或绝对XPath表达式都不会。它取决于所选的**轴**每**轴步**是否需要编写确切的层次结构 – Abel 2015-09-17 18:22:00

1

(我知道这个问题被问差不多一年前,但它看起来像现有的回答不回答原来的问题)

最近硒建立now allow you to use the same prefix as in your document与XPath表达式。这在2015年3月得到了修正,同时也被接纳进主要分支机构。不确定它是否已经在当前稳定的公开发行版中。

由于简单的节点测试就像您的建议/div,即使使用新的硒版本也无法正常工作,您可能需要使用//*[local-name() = 'div'],这会得到您想要的结果。