【问题标题】:org.openqa.selenium.SessionNotCreatedException: Unable to create session error using GeckoDriver and Firefox through Selenium and Javaorg.openqa.selenium.SessionNotCreatedException:无法通过 Selenium 和 Java 使用 GeckoDriver 和 Firefox 创建会话错误
【发布时间】:2020-05-13 18:14:45
【问题描述】:

我正在尝试使用以下代码在 firefox 上运行测试,但在 Windows Server 2012 R2 上运行测试时遇到异常。但相同的代码适用于 MACwindows 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$0(JsonWireProtocolResponse.java:54)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.util.stream.ReferencePipeline$3$1.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$4(NewSessionPipeline.java:76)
    at java.util.Optional.orElseThrow(Unknown Source)
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$5(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$0(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)

【问题讨论】:

    标签: java selenium selenium-webdriver firefox geckodriver


    【解决方案1】:

    此错误消息...

    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 无法启动/生成新的浏览上下文,即 Firefox 浏览器 会话。

    您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:

    • 您的 GeckoDriverFirefoxSelenium Client 版本是最新版本。
    • 但是您的 JDK 版本1.8.0_152,相当旧。

    解决方案

    • JDK 升级到最新级别 JDK 8u222
    • 进行系统重启
    • 以非 root 用户身份执行 Test

    【讨论】:

    • ty 用于解决方案@DebanjanB。会试试这个并回复你
    • @Rameshwar JDK 8 的最新版本,更好。
    • 我试过 jdk 8u241,它比 8u222 更好。但仍然遇到同样的错误
    • @Rameshwar 不,你没有得到同样的错误。在这个问题中,您的错误是 Driver info: driver.version: unknown at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method),但您的 new question 中的错误是 org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:46285 at org.openqa.selenium .remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    • 没错。这就是为什么我创建了一个不同的问题。
    【解决方案2】:

    我尝试运行 geckdirver.exe 文件并得到 vcruntime140.dll was not found 的错误。所以我不得不从这个link下载Microsoft Visual C++ 2015 Redistributable Update 3 RC

    geckodriver.exe 的位置也有问题。

    我已将它放在 Jenkins 工作区中,但它没有执行。我将它移到 Jenkins 工作区以外的文件夹中,它运行良好

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 2020-05-29
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      相关资源
      最近更新 更多