我正在使用Selenium为我的Web应用程序编写测试用例。当我从Firefox运行测试它工作正常,但当我尝试从IE运行它时,我无法运行,我收到错误消息:
这通常意味着调用COM方法IWebBrowser2 :: Navigate2()失败异常。
System.setProperty("webdriver.ie.driver", "browserdrivers/IEDriverServer.exe");
WebDriver web = new InternetExplorerDriver();
web.get("URL");
我能够看到IE屏幕,但它没有导航到该URL,我正在超越异常。我该如何解决这个问题?
答案 0 :(得分:6)
我自己刚遇到这个问题。对我来说,问题是我的应用程序使用HTTP基本身份验证,并且我试图通过页面URL设置用户名/密码组合,如下所示:http://username:password@host/path
问题是默认情况下,IE不允许您以这种方式设置用户名和密码(它是一个安全功能),这会导致上述错误。
要解决这个问题,我必须在regedit中添加一个注册表值。在密钥中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
添加名为DWORD
的新iexplore.exe
值和值0
,如此其他答案中所述https://stackoverflow.com/a/23519791/80779
答案 1 :(得分:2)
您必须将每个区域的保护模式设置设置为Internet Explorer中的相同值。希望以下链接可能对您有所帮助。
此致
维涅什
答案 2 :(得分:0)
我通过手动运行Internet Explorer解决了这个问题。加载浏览器后,系统会提示我“设置Internet Explorer 11'”。我选择了使用推荐的安全性,隐私和兼容性设置'然后点击“确定”。
关闭对话框后,我的浏览器显示了一个名为'的注意事项:未启用Internet Explorer增强安全配置' - 我忽略了这个并关闭了浏览器,并尝试再次成功运行自动化测试。
答案 3 :(得分:0)
此错误消息...
org.openqa.selenium.WebDriverException: This usually means that a call to the COM method IWebBrowser2::Navigate2() failed
...表示IEDriverServer无法启动/产生新的浏览上下文,即 Internet Explorer Browser 会话作为COM对象。
@JimEvans在文章You're Doing It Wrong: IE Protected Mode and WebDriver中提到,同时通过internet-explorer自动iedriverserver:
浏览器会话由iexplore.exe可执行文件的单个实例表示。用于驱动IE的框架可以使用CoCreateInstance()将浏览器实例化为COM对象,或者可以通过使用ActiveAccessibility并向适当的IE发送
WM_HTML_GETOBJECT
消息来轻松地将COM接口获取到正在运行的实例的COM接口。窗户把手。一旦框架有了指向COM接口的指针,就可以确保它们在浏览器的整个生命周期内都是有效的。这也意味着您可以轻松地通过DWebBrowserEvents2 COM界面附加到浏览器触发的事件。然后是IE 7和Windows Vista的结合。为了减少恶意网站带来的攻击面,IE 7引入了一种称为Protected Mode的东西,该东西利用Windows Vista中的强制完整性控制来阻止通常由JavaScript发起的IE发起的操作能够访问以前版本中的操作系统。虽然这对于大多数IE用户来说都是可喜的发展,但它为IE自动化带来了各种问题。当您通过从内部Intranet网站导航到Internet上一个页面来进入或退出保护模式时,IE必须创建一个新过程,因为它不能更改现有过程的强制完整性控制级别。此外,在IE 7之后的版本中,并非总是很明显已经越过了保护模式边界,因为IE试图通过将新进程的浏览器窗口与已经打开的浏览器窗口无缝合并来提供更好的用户体验。这种秘密的过程切换还意味着,在保护模式边界穿越之前,指向IE的COM对象的所有引用都将指向边界穿越之后IE不再使用的对象。
此外,Required Configuration中的Internet Explorer Driver明确提到:
IEDriverServer
可执行文件并将其放置在PATH中。
Advanced
标签中找到此选项。100%
,以便可以将本地鼠标事件设置为正确的坐标。100%
。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
。HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
。FEATURE_BFCACHE
子项可能存在也可能不存在,如果不存在则应创建。在此键内,创建一个名为DWORD
的{{1}}值,其值为0`。首先,您需要确保每个区域的保护模式设置为相同的值。此外,您还需要确保 Internet Explorer驱动程序的所需配置。
您可以在以下位置找到一些相关的讨论