我在Visual Studio中的代码使用的是selenium webdriver 2.24.0。我正在使用的测试框架是Nunit。我的代码工作正常(加载差异浏览器,驱动网站)直到2.24.0版本发布。
我在项目中添加了新的IE独立服务器。
现在每当我运行我的代码时,NUnit都会遇到此错误消息。
FirstSeleniumTest.SeleniumTest.TestGoogle:
SetUp : System.InvalidOperationException : Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones. (NoSuchDriver)
TearDown : System.NullReferenceException : Object reference not set to an instance of an object.
然后弹出命令提示符。
Started InternetExplorerDriver server (64-bit)
2.24.0.0
Listening on port 50329
我在IE上禁用了保护模式。仍然没有运气。
如何让我的代码恢复正常的网络驱动?
答案 0 :(得分:16)
您应确保为所有 4个安全区域(Internet,本地Intranet,受信任的站点,受限制的站点)启用或禁用该受保护模式。 换句话说,所有安全区域的设置值应该相同。
答案 1 :(得分:16)
只是为了添加已经正确的答案,如果设置所有值不同是一个选项,(需要安全性禁用是某些区域,但希望在其他区域保持安全性),您还可以使用重载初始化您的驱动程序包括InternetExplorerOptions
,并使用
new InternetExplorerOptions() { IntroduceInstabilityByIgnoringProtectedModeSettings = true}
答案 2 :(得分:6)
您需要将每个区域的保护模式设置设置为相同的值。 阅读:http://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration
答案 3 :(得分:2)
我同意亚历山大的观点,但如果贵公司不允许您对IE设置进行任何更改,该怎么办。
以下对我有用:
File file = new File("M:\\dev\\ria\\iedriver\\2.42.0\\install\\exec\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver = new InternetExplorerDriver(caps);
driver.get("http://www.google.com");