org.openqa.selenium.SessionNotCreatedException:无法通过 Selenium 和 Java 使用 GeckoDriver 和 Firefox 创建会话错误
org.openqa.selenium.SessionNotCreatedException: Unable to create session error using GeckoDriver and Firefox through Selenium and Java
我正在尝试 运行 使用以下代码在 firefox 上进行测试,但是当我 运行 在 [=32= 上进行测试时 运行 出现异常] 服务器 2012 R2。但是相同的代码适用于 MAC 和 windows 10
Firefox 版本 - 72.0.2
Gecko 驱动程序版本 - 0.26
用于集线器和节点的 Selenium 独立服务器 - 3.141.59
所需功能代码:
dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
dc.setCapability("webdriver.gecko.driver","C:\AutomationPrograms\geckodriver.exe");
dc.setBrowserName(browser);
dc.setJavascriptEnabled(true);
dc.setPlatform(Platform.ANY);
错误:
"desiredCapabilities": {
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd",
"marionette": true,
"acceptInsecureCerts": true,
"loggingPrefs": {
"browser": "ALL"
},
"browserName": "firefox",
"webdriver.gecko.driver": "C:\AutomationPrograms\geckodriver.exe",
"javascriptEnabled": true,
"version": ""
},
"capabilities": {
"firstMatch": [
{
"acceptInsecureCerts": true,
"browserName": "firefox",
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd"
}
]
}
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
Command duration or timeout: 104.36 seconds
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$errorHandler[=13=](JsonWireProtocolResponse.java:54)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction[=13=](HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession[=13=](ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
at framework.maincontroller.MainController.createDriver(MainController.java:856)
at framework.maincontroller.MainController.setUp(MainController.java:1197)
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.invokeMethod(Invoker.java:599)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create session from {
"desiredCapabilities": {
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd",
"marionette": true,
"acceptInsecureCerts": true,
"loggingPrefs": {
"browser": "ALL"
},
"browserName": "firefox",
"webdriver.gecko.driver": "C:\AutomationPrograms\geckodriver.exe",
"javascriptEnabled": true,
"version": ""
},
"capabilities": {
"firstMatch": [
{
"acceptInsecureCerts": true,
"browserName": "firefox",
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd"
}
]
}
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null(NewSessionPipeline.java:76)
at java.util.Optional.orElseThrow(Unknown Source)
at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession(NewSessionPipeline.java:75)
at java.util.Optional.orElseGet(Unknown Source)
at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:73)
at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65)
at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle[=13=](WebDriverServlet.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这个错误信息...
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
...意味着 GeckoDriver 无法 initiate/spawn 新的 浏览上下文 即 Firefox 浏览器 会话。
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您的GeckoDriver、Firefox和Selenium Client版本是最新的。
- 但是你的 JDK 版本 是 1.8.0_152 已经很旧了。
解决方案
- 将JDK升级到最近的水平JDK 8u222。
- 系统重启。
- 以非 root 用户身份执行
Test
。
我尝试 运行 geckdirver.exe 文件并得到错误 vcruntime140.dll was not found
。所以我不得不从这个 link 下载 Microsoft Visual C++ 2015 Redistributable Update 3 RC
。
geckodriver.exe 的位置也有问题。
我已将它放在 Jenkins 工作区中,但它没有执行。我将它移动到 Jenkins 工作区以外的文件夹并且工作正常
我正在尝试 运行 使用以下代码在 firefox 上进行测试,但是当我 运行 在 [=32= 上进行测试时 运行 出现异常] 服务器 2012 R2。但是相同的代码适用于 MAC 和 windows 10
Firefox 版本 - 72.0.2
Gecko 驱动程序版本 - 0.26
用于集线器和节点的 Selenium 独立服务器 - 3.141.59
所需功能代码:
dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
dc.setCapability("webdriver.gecko.driver","C:\AutomationPrograms\geckodriver.exe");
dc.setBrowserName(browser);
dc.setJavascriptEnabled(true);
dc.setPlatform(Platform.ANY);
错误:
"desiredCapabilities": {
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd",
"marionette": true,
"acceptInsecureCerts": true,
"loggingPrefs": {
"browser": "ALL"
},
"browserName": "firefox",
"webdriver.gecko.driver": "C:\AutomationPrograms\geckodriver.exe",
"javascriptEnabled": true,
"version": ""
},
"capabilities": {
"firstMatch": [
{
"acceptInsecureCerts": true,
"browserName": "firefox",
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd"
}
]
}
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
Command duration or timeout: 104.36 seconds
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$errorHandler[=13=](JsonWireProtocolResponse.java:54)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction[=13=](HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession[=13=](ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
at framework.maincontroller.MainController.createDriver(MainController.java:856)
at framework.maincontroller.MainController.setUp(MainController.java:1197)
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.invokeMethod(Invoker.java:599)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create session from {
"desiredCapabilities": {
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd",
"marionette": true,
"acceptInsecureCerts": true,
"loggingPrefs": {
"browser": "ALL"
},
"browserName": "firefox",
"webdriver.gecko.driver": "C:\AutomationPrograms\geckodriver.exe",
"javascriptEnabled": true,
"version": ""
},
"capabilities": {
"firstMatch": [
{
"acceptInsecureCerts": true,
"browserName": "firefox",
"server:CONFIG_UUID": "b2cccab6-d8e1-4cdb-aac1-10e33ef6a8bd"
}
]
}
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null(NewSessionPipeline.java:76)
at java.util.Optional.orElseThrow(Unknown Source)
at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession(NewSessionPipeline.java:75)
at java.util.Optional.orElseGet(Unknown Source)
at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:73)
at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65)
at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle[=13=](WebDriverServlet.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
这个错误信息...
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'M-AMS-DEVELOPER', ip: '108.61.189.113', os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_152'
Driver info: driver.version: unknown
...意味着 GeckoDriver 无法 initiate/spawn 新的 浏览上下文 即 Firefox 浏览器 会话。
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您的GeckoDriver、Firefox和Selenium Client版本是最新的。
- 但是你的 JDK 版本 是 1.8.0_152 已经很旧了。
解决方案
- 将JDK升级到最近的水平JDK 8u222。
- 系统重启。
- 以非 root 用户身份执行
Test
。
我尝试 运行 geckdirver.exe 文件并得到错误 vcruntime140.dll was not found
。所以我不得不从这个 link 下载 Microsoft Visual C++ 2015 Redistributable Update 3 RC
。
geckodriver.exe 的位置也有问题。
我已将它放在 Jenkins 工作区中,但它没有执行。我将它移动到 Jenkins 工作区以外的文件夹并且工作正常