Internet explorer 在IE:org.openqa.selenium.WebDriverException中:这通常意味着对COM方法IWebBrowser2::Navigate2()的调用失败

Internet explorer 在IE:org.openqa.selenium.WebDriverException中:这通常意味着对COM方法IWebBrowser2::Navigate2()的调用失败,internet-explorer,selenium,selenium-webdriver,iedriverserver,Internet Explorer,Selenium,Selenium Webdriver,Iedriverserver,我正在使用Selenium为我的web应用程序编写测试用例。当我从Firefox运行测试时,它工作正常,但当我尝试从IE运行测试时,我无法运行,并收到错误消息: 这通常意味着对COM方法IWebBrowser2::Navigate2()的调用失败 我可以看到IE屏幕,但它并没有导航到那个URL,我得到了上述例外。如何解决此问题?您必须在Internet Explorer中将每个区域的保护模式设置设置为相同的值。希望下面的链接对您有所帮助 问候, 维涅什我自己也遇到过这个问题。对我来说,问题是我

我正在使用Selenium为我的web应用程序编写测试用例。当我从Firefox运行测试时,它工作正常,但当我尝试从IE运行测试时,我无法运行,并收到错误消息:

这通常意味着对COM方法IWebBrowser2::Navigate2()的调用失败


我可以看到IE屏幕,但它并没有导航到那个URL,我得到了上述例外。如何解决此问题?

您必须在Internet Explorer中将每个区域的保护模式设置设置为相同的值。希望下面的链接对您有所帮助

问候,


维涅什

我自己也遇到过这个问题。对我来说,问题是我的应用程序使用HTTP基本身份验证,我试图通过页面URL设置用户名/密码组合,如下所示:

问题是默认情况下IE不允许您以这种方式设置用户名和密码(这是一种安全功能),这会导致上述错误


要解决这个问题,我必须在regedit中添加一个注册表值。在键中:
HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE\u HTTP\u USERNAME\u PASSWORD\u DISABLE
添加一个新的
DWORD
值,该值名为
iexplore.exe
,值为
0
,如另一个答案所述我通过手动运行Internet Explorer解决了这个问题。加载浏览器时,系统会提示我“设置Internet Explorer 11”。我选择了“使用推荐的安全、隐私和兼容性设置”,然后单击“确定”

对话框关闭后,我的浏览器显示了一个名为“警告:Internet Explorer增强的安全配置未启用”的配置页面。我忽略了这一点,关闭了浏览器,并尝试再次成功运行自动测试。

此错误消息

org.openqa.selenium.WebDriverException: This usually means that a call to the COM method IWebBrowser2::Navigate2() failed
…表示IEDriverServer无法启动/生成新的浏览上下文,即作为COM对象的Internet Explorer浏览器会话


Internet Explorer的保护模式设置 @JimEvans在一篇文章中提到,同时通过以下方式实现自动化:

浏览器会话由iexplore.exe可执行文件的单个实例表示。用于驱动IE的框架可以使用将浏览器实例化为COM对象,或者通过使用ActiveAccessibility的存在并向相应的IE窗口句柄发送
WM\u HTML\u GETOBJECT
消息,可以轻松地将COM接口获取到正在运行的实例。一旦框架有了指向COM接口的指针,您就可以确保它们在浏览器的整个生命周期内都是有效的。这也意味着你可以很容易地通过COM界面连接到浏览器触发的事件。接着,IE7和WindowsVista的结合出现了。为了减少恶意网站带来的攻击面,IE 7引入了一种称为的东西,它利用Windows Vista中的强制完整性控制来防止IE启动的操作(通常由JavaScript启动)能够以以前版本中的方式访问操作系统。虽然这对大多数IE用户来说都是一个受欢迎的发展,但它为自动化IE带来了各种各样的问题。当您通过(比如)从内部intranet网站导航到internet上的网站而进入或退出保护模式时,IE必须创建一个新的流程,因为它无法更改现有流程的强制完整性控制级别。此外,在7之后的IE版本中,并不总是明显地跨越了受保护模式的边界,因为IE试图通过无缝地将新流程的浏览器窗口与已打开的浏览器窗口合并来提供更好的用户体验。这种隐蔽的进程切换还意味着,在保护模式边界交叉之前指向IE COM对象的任何引用都会留在边界交叉之后指向IE不再使用的对象


此外,报告明确提到:

  • 必须下载
    IEDriverServer
    Executable并将其放置在您的路径中
  • 在Windows Vista或Windows 7上的IE 7或更高版本上,必须将每个区域的保护模式设置设置为相同的值。该值可以打开或关闭,只要每个分区的值相同。要设置受保护模式设置,请从“工具”菜单中选择“Internet选项…”,然后单击“安全”选项卡。对于每个区域,标签底部将有一个复选框,标记为“启用保护模式”

  • 此外,IE 10及更高版本必须禁用增强保护模式。此选项位于Internet选项对话框的
    Advanced
    选项卡中
  • 浏览器缩放级别必须设置为
    100%
    ,以便将本机鼠标事件设置为正确的坐标
  • 对于Windows 10,您还需要在显示设置中将文本、应用程序和其他项目的大小设置为
    100%
  • 仅对于IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序能够保持与它创建的Internet Explorer实例的连接
  • 对于32位Windows安装,您必须在注册表编辑器中检查的项是
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE\BFCACHE
  • 对于64位Windows安装,密钥是
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE\BFCACHE
  • 请注意,
    FEATURE\u BFCACHE
    子项可能存在也可能不存在,如果不存在,则应创建该子项。在此键内,创建一个名为
    iexplore.exe
    DWORD
    值,其值为0`

解决方案 首先,您需要确保Prote
org.openqa.selenium.WebDriverException: This usually means that a call to the COM method IWebBrowser2::Navigate2() failed