我正在尝试使用Selenium Internet Explorer
驱动程序,但是当我尝试实例化它时,它正在崩溃:
[TestInitialize]
public void TestInitialise() {
ieDriver = new InternetExplorerDriver();
}
出现以下错误:
启用保护模式必须设置为相同的值(启用或 禁用)适用于所有区域。 (NoSuchDriver)。
我找到了一个明显的问题解决方案here,建议设置驱动程序DesiredCapabilities
,如下所示:
var capabilitiesInternet = new OpenQA.Selenium.Remote.DesiredCapabilities();
capabilitiesInternet.SetCapability("ignoreProtectedModeSettings", true);
IWebDriver webDriver = new InternetExplorerDriver(capabilitiesInternet);
唯一的问题是,我使用的是我能找到的最新版本的驱动程序,InternetExplorerDriver
没有覆盖DesiredCapabilities
作为参数。
现在是否有一些新的或其他方式设置DesiredCapabilites
而不是我使用的示例?
答案 0 :(得分: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);
答案 1 :(得分:0)
Jim Evans可以深入了解此异常的上下文。我将在这里引用它作为后代:
在IE中,从“工具”菜单(或更高版本工具栏中的齿轮图标)中选择“" Internet选项”。转到“安全”选项卡。在每个区域的对话框底部,您应看到一个标有"启用保护模式的复选框。"将复选框的值设置为每个区域的相同值(选中或取消选中)。这是参考对话框:
请注意,您不必更改安全级别的滑块,也不必禁用保护模式。我经常为所有区域打开保护模式,因为我认为它提供了更安全的浏览体验。
注意:这仅在关闭保护模式时对我有效。
答案 2 :(得分: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扩展名保存并双击即可!
现在尝试再次运行自动化脚本
答案 3 :(得分:-1)
This Question and Answer也可能有用。我无法通过Internet Explorer选项窗格使其工作,最终必须手动调整注册表。