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

问题描述 投票:-1回答:3

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

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

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

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

java eclipse selenium internet-explorer webdriver
3个回答
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
投票

将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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.