为什么XPath不能在IE中运行?

时间:2017-12-30 02:20:21

标签: java eclipse selenium internet-explorer webdriver

我正在尝试使用XPath查找元素。它在Chrome上运行完美,但在Internet Explorer上却没有那么多。

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

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

的元素

可能导致这种情况的原因是什么?我已经修复了最常见的IE错误,例如设置"保护模式"还有" zoom"功能。

3 个答案:

答案 0 :(得分:1)

因为嵌入浏览器的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树的根。

答案 1 :(得分:1)

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

html>身体>形式> div:nth-​​child(3)> div:nth-​​child(2)> div> div:nth-​​child(2)>一个

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

答案 2 :(得分:0)

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