在 Firefox 中进行 运行 测试时抛出 SessionNotCreatedException
Throws SessionNotCreatedException While running test in Firefox
我正在使用以下版本:
Selenium: 3.6.0
Mozilla: 56.0
Gecko Driver: V 0.19.0
当我 运行 testng.xml 为 mozilla firefox 文件时,它抛出这个异常:
Log:
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{marionette=true, binary=C:\Program Files (x86)\Mozilla Firefox\firefox.exe, browserName=firefox, moz:firefoxOptions={binary=Optional[FirefoxBinary(C:\Program Files\Mozilla Firefox\firefox.exe)], args=[], legacy=null, logLevel=null, prefs={}, profile=null}, version=, platform=ANY}], required capabilities = Capabilities [{}]
Build info: version: 'unknown', revision: 'b526bd5', time: '2017-03-07 11:11:07 -0800'
System info: host: 'LAPTOP-HS6HUVRH', ip: '9.124.94.212', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_151'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:243)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:121)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:164)
at com.drlive.base.BaseTest.initApplication(BaseTest.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:166)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
代码:
if(browser.equalsIgnoreCase("firefox")) {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
capabilities.setCapability("platform", Platform.ANY);
capabilities.setCapability("binary", "C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
driver=new FirefoxDriver(capabilities);
}
我认为您在初始化 FirefoxDriver() 之前没有更新 gecko 驱动程序的路径,所以
- 1st: 您需要将 geckodriver 下载到 运行 Firefox。 Download Link for Gecko Driver
- 2nd: 您可能需要在启动驱动程序之前设置 geckodriver 的路径。
因此您的代码应如下所示。
System.setProperty("webdriver.gecko.driver", "c:/path_to_driver/geckodriver.exe");
driver = new FirefoxDriver();
更新到最新的浏览器版本来解决这个问题。如果长时间坚持使用特定的浏览器版本,geckodriver 和 selenium 框架将变得不兼容。更新您的 firefox 版本,错误可能
我正在使用以下版本:
Selenium: 3.6.0
Mozilla: 56.0
Gecko Driver: V 0.19.0
当我 运行 testng.xml 为 mozilla firefox 文件时,它抛出这个异常:
Log: org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{marionette=true, binary=C:\Program Files (x86)\Mozilla Firefox\firefox.exe, browserName=firefox, moz:firefoxOptions={binary=Optional[FirefoxBinary(C:\Program Files\Mozilla Firefox\firefox.exe)], args=[], legacy=null, logLevel=null, prefs={}, profile=null}, version=, platform=ANY}], required capabilities = Capabilities [{}] Build info: version: 'unknown', revision: 'b526bd5', time: '2017-03-07 11:11:07 -0800' System info: host: 'LAPTOP-HS6HUVRH', ip: '9.124.94.212', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_151' Driver info: driver.version: FirefoxDriver at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:243) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:121) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:164) at com.drlive.base.BaseTest.initApplication(BaseTest.java:126) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146) at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:166) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105) at org.testng.TestRunner.privateRun(TestRunner.java:744) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
代码:
if(browser.equalsIgnoreCase("firefox")) {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
capabilities.setCapability("platform", Platform.ANY);
capabilities.setCapability("binary", "C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
driver=new FirefoxDriver(capabilities);
}
我认为您在初始化 FirefoxDriver() 之前没有更新 gecko 驱动程序的路径,所以
- 1st: 您需要将 geckodriver 下载到 运行 Firefox。 Download Link for Gecko Driver
- 2nd: 您可能需要在启动驱动程序之前设置 geckodriver 的路径。
因此您的代码应如下所示。
System.setProperty("webdriver.gecko.driver", "c:/path_to_driver/geckodriver.exe");
driver = new FirefoxDriver();
更新到最新的浏览器版本来解决这个问题。如果长时间坚持使用特定的浏览器版本,geckodriver 和 selenium 框架将变得不兼容。更新您的 firefox 版本,错误可能