为什么XPath不能在IE中运行? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么XPath不能在IE中运行? [关闭]相关的知识,希望对你有一定的参考价值。

我试图使用XPath找到一个元素。它在Chrome上运行完美,但在Internet Explorer上却没有那么多。

在Chrome上,它工作正常,但当我尝试为IE运行它时,我收到以下错误,说

线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法找到xpath == html / body / form / div [3] / div [2] / div / div [2] / a的元素

可能是什么导致了这个?我已经修复了最常见的IE错误,如设置“保护模式”和“缩放”功能。

答案

因为嵌入浏览器的XPath引擎是由每个浏览器供应商自己实现的,实际上它们在实现方面有所不同。对于较早的IE,像6和7一样没有嵌入XPath引擎。如果你在没有嵌入XPath引擎的浏览器上使用XPath,Selenium将使用自己的XPath库来执行你的XPath,Selenuim Xpath库没有实现所有的XPath功能,也与其他浏览器的Xpath引擎不同。

回到你的问题,你在开始时错过了一个salsh,它应该是

/html/body/form/div[3]/div[2]/div/div[2]/a

因为HTML节点是HTML DOM树的根,所以你应该把/放在头上告诉你的xpath从根节点开始

或者你可以省略xpath中的html://body/form/div[3]/div[2]/div/div[2]/a

因为它是一个真正的HTML节点是每种浏览器上的HTML Dom树的根。

另一答案

将xpath转换为css。 Xpath可以在浏览器之间变化,因为CSS-SELECTORS通常是相同的跨浏览器。所以用铬检查不会有问题。

html> body> form> div:nth-​​child(3)> div:nth-​​child(2)> div> div:nth-​​child(2)> a

Xpaths和IE也因其问题而闻名。如果必须使用xpath,请阅读Finding an elements XPath using IE Developer tool

另一答案

你可以尝试的一件事是使用firefox的firebugfirepath插件来获取xpath,还可以通过增加元素检查之间的加载时间,即Thread.sleep()。我建议的第一个想法至少对我有用。如有任何疑虑,请通知我

以上是关于为什么XPath不能在IE中运行? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

IE兼容性问题[关闭]

Xpath定位大全

selenium使用Xpath定位之完整篇

selenium中为啥依据xpath定位html页面左边树形菜单无效

页面在 Firefox 和 IE 中不起作用 [关闭]

关于iframe 关闭后,IE下不能释放内存的问题,跪求解决方案.