自从 IE7 引入 Protected Mode 以来, IE 浏览器的安全性的确得到了一定程度的提高。其原理从本质来讲,在浏览某些需要启用保护模式的页面时,会开启一个新的浏览器会话以完成任务,而此时你无法控制前一个会话中的 COM 对象。随之而来的问题是,WebDriver 在这种情况下会遇到如下错误提示信息:
org.openqa.selenium.WebDriverException:Unexpected error launching
Internet Explorer.Protected Mode must be set to the same value(enabled or disabled) for all zones.
解决方案1:
可通过设置 Internet Explorer 浏览器对应所有 Zone 的 Protected Mode 一致来达到目标。Zone 包括 Internet、Local intranet、Trusted sites 和 Restricted sites。这4个 Zone 上的选项 Enable Protected Mode 要么全部勾选,要么全部不勾选
解决方案2:
解决方案1对于只有少量的 Windows 测试机器而言具有可行性。而对于具有大规模的 Windows 测试机器的机构而言,去设置每一台 Windows 机器上的 Internet Explorer 的 Protected Mode 的工作量过于庞大。有没有更加高效的解决方案来达到同样的效果呢个?答案是通过设置 Internet Explorer Driver 的 Capability 为 IE_ENSURE_CLEAN_SESSION 达到目的。示例代码如下:
public class testInternetExplorerDriver{
public static void main(String[] args){
System.setProperty("webdriver.ie.driver", "D:DriverIEDriverServer_Win32_2.37.0_latestIEDriverSer.exe");
DesiredCapabilities capab = DesiredCapabilities.internetExplorer();
capab.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
capab.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(capab);
driver.get("http://www.baidu.com");
}
}