4

我正在尝试使用Selenium Internet Explorer驱动程序,但是当我尝试实例化它时它会中断:

[TestInitialize]
public void TestInitialise() {
  ieDriver = new InternetExplorerDriver();
}

出现以下错误:

必须将所有区域的启用保护模式设置为相同的值(启用或禁用)。(NoSuchDriver)。

我在这里找到了我的问题的明显解决方案,它建议设置驱动程序DesiredCapabilities,如下所示:

var capabilitiesInternet = new OpenQA.Selenium.Remote.DesiredCapabilities();
capabilitiesInternet.SetCapability("ignoreProtectedModeSettings", true);
IWebDriver webDriver = new InternetExplorerDriver(capabilitiesInternet);

唯一的问题是,我使用的是我能找到的最新版本的驱动程序,并且没有InternetExplorerDriver作为DesiredCapabilities参数的替代。

现在是否有一些新的或其他设置方式DesiredCapabilites而不是我使用的示例?

4

4 回答 4

7

该设置将解决该问题,但会引入一些微妙的问题。你没有正确设置IE的保护模式吗?这是它的正确解决方案。

这个指南住在这里:

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

基本上只是为每个区域关闭 IE 中的保护模式。

或者,如果您确实必须使用覆盖功能,那么您可以做两件事:

使用InternetExplorerOptions类。注意属性的名称,它会给你一个很大的线索,使用它不是一个好主意。

var options = new InternetExplorerOptions;
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
var driver = new InternetEplorerDriver(options);

或者使用 RemoteWebDriver,它可以接受ICapabilities接口的任何实现,它DesiredCapabilites实现:

var capabilities = new DesiredCapabilities("internet explorer", string.Empty, new Platform(PlatformType.Windows));
capabilities.SetCapability("ignoreProtectedModeSettings", true);
var webDriver = new RemoteWebDriver(capabilities);
于 2012-11-14T17:39:41.763 回答
2

Jim Evans (Selenium 的贡献者)的这篇博客文章对围绕这个异常的上下文提供了一个非常深入的视图。我将在这里引用它以供后代使用:

在 IE 中,从“工具”菜单(或更高版本的工具栏中的齿轮图标)中,选择“Internet 选项”。转到安全选项卡。在每个区域的对话框底部,您应该会看到一个标有“启用保护模式”的复选框。对于每个区域,将复选框的值设置为相同的值(选中或未选中)。这是供参考的对话框:

Internet Explorer 安全设置对话框

请注意,您不必更改安全级别的滑块,也不必禁用保护模式。我通常在所有区域都打开保护模式的情况下运行,因为我认为它提供了更安全的浏览体验。

注意:这仅在关闭保护模式时对我有用。

于 2013-10-31T14:27:43.807 回答
0

我无法在我的系统上手动修改保护模式设置,因为它们已被禁用。但是下面用于更新注册表值的 VBA 代码片段对我有用。

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."

Set ScriptMe=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

'Disable protected mode for local intranet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for trusted pages'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for internet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for restricted sites'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

msgbox "Protected Mode Settings are updated"

只需将上面的代码复制粘贴到记事本中并使用 .vbs 扩展名保存并双击它!

现在尝试再次运行您的自动化脚本

于 2020-08-23T06:13:48.270 回答
-2

此问答也可能对尝试处理保护模式问题的任何人有用。我无法通过 Internet Explorer 选项窗格让它工作,最终不得不手动调整注册表。

于 2015-05-14T16:38:01.790 回答