无法使用Selenium WebDriver和Java打开IE11驱动程序实例

System.setProperty("webdriver.ie.driver","C:\\Users\\IEDriverServer_Win32_2.45.0\\IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(); driver.get("http://xxx"); 

执行上述代码时显示错误:

线程“main”中的exceptionorg.openqa.selenium.remote.SessionNotFoundException:启动Internet Explorer时出现意外错误。 保护模式设置对于所有区域都不相同。 必须将启用保护模式设置为所有区域的相同值(启用或禁用)。 (警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:1.33秒

有人可以建议解决这个问题吗?

如果您在没有访问权限的代理服务器后面更改保护模式设置,那么请使用此function

 DesiredCapabilities cap = DesiredCapabilities.internetExplorer(); cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 

这会引入一些瑕疵

如果保护模式设置对于所有区域不相同或者浏览器已缩放,则无法打开IE浏览器实例。

  1. 要解决此问题,请打开IE浏览器并转到“ Internet选项”窗口。
  2. 单击“ 安全”选项卡 ,确保“ Internet ”,“ 本地Intranet ”,“ 可信站点 ”和“ 受限制站点 ”已选中或取消选中“ 启用保护模式 ”以获取所有选项。
  3. 应用并保存设置并重新运行测试代码。 它应该工作。

提供了以下解决方法 ,可帮助您临时解决问题。

 DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); WebDriver driver = new InternetExplorerDriver(caps); 

注意: 如果您无权更改IE设置,请要求您与IT管理员联系以完成所需的更改。

  • 保护模式是Internet Explorer(IE) 安全性的重要一步,它通过运行具有极大限制权限的IE进程来帮助保护用户免受攻击。
  • 与IE的几乎所有其他设置一样,保护模式设置存储在Windows注册表中,并在实例化浏览器时进行检查。
  • 对于那些无法设置IE设置的人来说,驱动程序需要一种解决方法,因为他们的机器被过度锁定,因此引入了function性。
  • 它只是绕过了注册表检查 。 但是,使用该function并不能解决潜在的问题。
  • 可能会导致意外挂起元素位置不起作用以及未传播的点击
  • 为了帮助警告人们这个潜在的问题,该function被赋予了一些可怕的名字,如INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS
  • 请您的IT支持人员进行更改,如果仍然使用该function,则会危及代码的稳定性。