解决使用Selenium2进行Web自动化测试时IE启动失败的方法

我的机器环境是WIN7,IE8,JDK1.5.0,Selenium2.19.0版本,在调试WEB自动化测试过程中,遇到Firfox启动正常,但是IE8却启动报如下的错误:

 

java.lang.RuntimeException: org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer. Protected Mode must be set to the same value (enabled or disabled) for all zones. (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 215 milliseconds

Build info: version: '2.19.0', revision: '15848', time: '2012-02-08 16:25:03'

System info: os.name: 'Windows Vista', os.arch: 'x86', os.version: '6.1', java.version: '1.5.0_11'

Driver info: driver.version: InternetExplorerDriver

at com.ygsoft.soaware.test.selenium.WebDriverFactory.getWebDriver(WebDriverFactory.java:32)

at com.ygsoft.soaware.test.selenium.WebDriverFactory.getWebDriver(WebDriverFactory.java:49)

at com.ygsoft.soaware.test.selenium.LoginDemoTest.testLoginSuccess(LoginDemoTest.java:30)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at junit.framework.TestCase.runTest(TestCase.java:168)

at junit.framework.TestCase.runBare(TestCase.java:134)

at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)

at junit.framework.TestResult$1.protect(TestResult.java:110)

at junit.framework.TestResult.runProtected(TestResult.java:128)

at junit.framework.TestResult.run(TestResult.java:113)

at junit.framework.TestCase.run(TestCase.java:124)

at junit.framework.TestSuite.runTest(TestSuite.java:232)

at junit.framework.TestSuite.run(TestSuite.java:227)

at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Caused by: org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer. Protected Mode must be set to the same value (enabled or disabled) for all zones. (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 215 milliseconds

Build info: version: '2.19.0', revision: '15848', time: '2012-02-08 16:25:03'

System info: os.name: 'Windows Vista', os.arch: 'x86', os.version: '6.1', java.version: '1.5.0_11'

Driver info: driver.version: InternetExplorerDriver

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:494)

at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:170)

at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:123)

at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:439)

at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:139)

at org.openqa.selenium.ie.InternetExplorerDriver.setup(InternetExplorerDriver.java:91)

at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:48)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:494)

at java.lang.Class.newInstance0(Class.java:350)

at java.lang.Class.newInstance(Class.java:303)

at com.ygsoft.soaware.test.selenium.WebDriverFactory.getWebDriver(WebDriverFactory.java:30)

... 22 more

找了一圈的Google,有些是说要去掉浏览器的安全模式选择,但是发现没有用。
于是对代码进行了修改如下:
1 if (browser.endsWith("firefox")) {
2      _logger.info("firefox");
3      _driver = new FirefoxDriver();
4 } else {
5      _logger.info("iexplore");
6      DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
7      ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
8      _driver = new InternetExplorerDriver(ieCapabilities);
9 }

 

 
 Good,IE也能正常启动了。
posted @ 2012-03-30 10:09  haycco  阅读(836)  评论(0编辑  收藏  举报