当前位置: 代码迷 >> Web前端 >> 解决施用Selenium2进行Web自动化测试时IE启动失败的方法
  详细解决方案

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

热度:157   发布时间:2012-10-13 11:38:17.0
解决使用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,有些是说要去掉浏览器的安全模式选择,但是发现没有用。
于是对代码进行了修改如下:
if (browser.endsWith("firefox")) {
            _logger.info("firefox");
            _driver = new FirefoxDriver();
        } else {
            _logger.info("iexplore");
            DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
            ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
            _driver = new InternetExplorerDriver(ieCapabilities);
        }
?
?Good,IE也能正常启动了。
1 楼 lhs295988029 前天  
今天碰到和您一模一样的问题了,照着您的方法解决了,真是感激不尽啊!
2 楼 hay 昨天  
lhs295988029 写道
今天碰到和您一模一样的问题了,照着您的方法解决了,真是感激不尽啊!

哈哈