3

我是自动化测试的新手,虽然我的 Selenium 测试在 Chrome 和 Firefox 上运行,但它们没有在 IE11 上运行。我做了我在下面详述的所有检查,但我一直遇到这个错误:

org.openqa.selenium.WebDriverException: Failed to navigate to http://myapp. This usually means that a call to the COM method IWebBrowser2::Navigate2() failed.

我首先做了所需的配置,如 https://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration)。

我已尝试按照In IE: org.openqa.selenium.WebDriverException 中的建议编辑我的注册表:这通常意味着对 COM 方法 IWebBrowser2::Navigate2() 的调用失败 到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl \FEATURE_HTTP_USERNAME_PASSWORD_DISABLE 添加一个名为 iexplore.exe 且值为 0 的新 DWORD 值,如https://stackoverflow.com/users/80779/lordofthepigs所述

我还尝试介绍https://stackoverflow.com/users/4210466/karunakar-sapogu建议的代码:

new_window = self.driver.window_handles[1]   
self.driver.switch_to_window(new_window)

但我似乎没有正确介绍它,因为我遇到了 java 错误。

有没有人用Java解决过这个问题?你能给我一步一步的指示吗?

4

3 回答 3

2

1)您确定这是您的 IEdriver 实例运行吗?

2) 你使用的是 IEdriver x64 还是 IEDriver x86?

即使您使用 x64 windows,在大多数情况下,您也会使用 internet exlporer x86。请尝试 x86 驱动程序并尝试重现此类行为

于 2015-08-25T18:10:04.187 回答
1

有效!非常感谢。问题是我有 64 位版本。通过将其替换为 32 位版本,我的代码可以正常工作(我在 System32 中有驱动程序,以绕过修改路径)

    System.setProperty(webdriver.ie.driver", "C://Windows/System32/IEDriverServer.exe");
    driver = new InternetExplorerDriver();
    baseUrl = "http://mysite";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
于 2015-09-14T10:40:32.140 回答
0

此错误消息...

org.openqa.selenium.WebDriverException: Failed to navigate to http://myapp. This usually means that a call to the COM method IWebBrowser2::Navigate2() failed

...意味着 IEDriverServer 无法启动/产生新的浏览上下文,即Internet Explorer 浏览器会话作为 COM 对象。


Internet Explorer 驱动程序所需的配置

Internet Explorer 驱动程序必需配置清楚地提到:

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

保护模式设置

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

解决方案

首先,您需要确保每个区域的保护模式设置为相同的值。此外,您还需要确保Internet Explorer 驱动程序必需配置


参考

您可以在以下位置找到一些相关的讨论:

于 2020-07-14T21:53:48.360 回答