0

我在 chrome 上创建了 xpath:

"//a[@href[contains(.,'moduleCode=MASTER')]]"
这个 xpath 适用于 chromedriver。但是,当为 IEDriverServer 执行相同的 Xpath 时,它会引发如下错误:

org.openqa.selenium.ElementNotVisibleException:无法单击元素(警告:服务器未提供任何堆栈跟踪信息)
命令持续时间或超时:0 毫秒
构建信息:版本:'3.10.0',修订:'176b4a9',时间:'2018-03-02T19:03:16.397Z'

但是另一个xpath:

"//a[包含(@href,'moduleCode=MASTER')]"
适用于 ChromeDriver 和 IEDriverServer。

无法弄清楚为什么两个 xpath 之间存在这种差异以及为什么 IEDriverServer 不支持其中一个 xpath。

使用的能力如下:

    
能力.setCapability(CapabilityType.ACCEPT_SSL_CERTS,真);
             能力.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
             能力.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP,真);
             能力.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
             能力.setCapability(InternetExplorerDriver.NATIVE_EVENTS, true);
4

2 回答 2

0

在此讨论中从@JimEvans 的回答中摘录:

FirefoxChrome的驱动程序实现由这些浏览器( MozillaGoogle )的供应商开发和维护,这些驱动程序可以访问浏览器的内部,而IEDriverServer没有(并且可能永远不会)。

因此,驱动程序实现构思和单击元素的方式存在一些差异。


解决方案

使用IEDriverServerInternet Explorer 11时确保将nativeEvents功能设置为true

capabilities.setCapability("nativeEvents", true);
于 2019-04-30T11:21:12.277 回答
0

Selenium 文档中所述,

在高层次上,WebDriver 尽可能使用浏览器的本机 XPath 功能。在那些没有原生 XPath 支持的浏览器上,我们提供了自己的实现。除非您意识到各种 XPath 引擎之间的差异,否则这可能会导致一些意外行为。

于 2019-04-30T11:05:53.090 回答