WebDriverThread.getDriver()-在将Selenium作为systemctl服务启动时创建驱动程序错误

时间:2019-07-19 04:12:20

标签: selenium google-chrome selenium-webdriver selenium-chromedriver systemctl

以下是我的JSON文件chrome节点:

{
  "capabilities":
  [
    {
      "webdriver.chrome.driver": "/home/node1/seleniumserver/chromedriver",
      "browserName": "chrome",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver",
      "version": 2.39,
      "deviceName": "chrome"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 100,
  "timeout": 1500,
  "port": 4502,
  "host": "10.28.19.104",
  "register": true,
  "registerCycle": 5000,
  "hub": "http://10.28.19.251:4545",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {}
}

下面是我的启动脚本:

java -jar /home/node1/seleniumserver/selenium-server-standalone-3.141.59.jar -role node -nodeConfig /home/node1/seleniumserver/nodeConfigChrome.json

我正在尝试使用systemctl创建服务。我按照以下步骤操作:

1)在/ etc / systemd / system文件夹中创建了selenium.service。

After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
RestartSec=1
User=node1
ExecStart=/usr/bin/env sh /home/node1/seleniumserver/startNodeChrome.sh

[Install]
WantedBy=multi-user.target

2)systemctl守护程序重新加载 3)systemctl启动硒 4)systemctl启用硒。

服务已启动并成功运行。

但是当我从jenkins触发脚本时,出现此错误。从终端启动时,否则将正常工作。

[ERROR] 11:59:50.026 com.ytlctest.base.WebDriverThread.getDriver() - Error creating the driver
org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'node01', ip: '10.28.18.104', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.21.3.el7.x86_64', java.version: '12.0.2'
Driver info: driver.version: unknown
Command duration or timeout: 283 milliseconds
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_181]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_181]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_181]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_181]
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122) ~[selenium-remote-driver-3.14.0.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_181]
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) ~[?:1.8.0_181]
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) ~[?:1.8.0_181]
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) ~[?:1.8.0_181]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:1.8.0_181]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_181]
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) ~[?:1.8.0_181]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_181]
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464) ~[?:1.8.0_181]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130) ~[selenium-remote-driver-3.14.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:143) ~[selenium-remote-driver-3.14.0.jar:?]
    at com.ytlctest.base.WebDriverThread.getDriver(WebDriverThread.java:131) [selfra-1.0.88.jar:?]
    at com.ytlctest.base.DriverFactory.getDriver(DriverFactory.java:58) [selfra-1.0.88.jar:?]
    at com.ytlctest.ycms.testcase.YCMSPostpaidAccountCreation.initialiseObjects(YCMSPostpaidAccountCreation.java:73) [classes/:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) [testng-6.14.3.jar:?]
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59) [testng-6.14.3.jar:?]
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458) [testng-6.14.3.jar:?]
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222) [testng-6.14.3.jar:?]
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142) [testng-6.14.3.jar:?]
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:168) [testng-6.14.3.jar:?]
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105) [testng-6.14.3.jar:?]
    at org.testng.TestRunner.privateRun(TestRunner.java:648) [testng-6.14.3.jar:?]
    at org.testng.TestRunner.run(TestRunner.java:505) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunner.run(SuiteRunner.java:364) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-6.14.3.jar:?]
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) [testng-6.14.3.jar:?]
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208) [testng-6.14.3.jar:?]
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137) [testng-6.14.3.jar:?]
    at org.testng.TestNG.runSuites(TestNG.java:1049) [testng-6.14.3.jar:?]
    at org.testng.TestNG.run(TestNG.java:1017) [testng-6.14.3.jar:?]
    at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:283) [surefire-testng-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:75) [surefire-testng-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:120) [surefire-testng-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:383) [surefire-booter-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:344) [surefire-booter-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125) [surefire-booter-2.22.0.jar:2.22.0]
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:417) [surefire-booter-2.22.0.jar:2.22.0]
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'

寻求帮助来解决此问题。

1 个答案:

答案 0 :(得分:-1)

此错误消息...

com.ytlctest.base.WebDriverThread.getDriver() - Error creating the driver
org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
.
Driver info: driver.version: unknown

...表示 ChromeDriver 无法启动/产生新的 WebBrowser ,即 Chrome浏览器会话。

您的主要问题是所使用的二进制版本之间的不兼容性

  • 您正在使用 chromedriver = 2.39
  • chromedriver=2.39的发行说明中明确提到以下内容:
  

支持 Chrome v66-68

  • 大概您正在使用 chrome = 75.0
  • 的最新GA版本
  • ChromeDriver v75.0的发行说明中明确提到以下内容:
  

支持 Chrome v75

因此 ChromeDriver v2.39 Chrome浏览器v75.0

之间存在明显的不匹配

解决方案

  • ChromeDriver 升级到当前的ChromeDriver v75.0级别。
  • 保持 Chrome 版本为 Chrome v75 级别。
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 如果您的基本 Web客户端版本过旧,请通过Revo Uninstaller进行卸载,并安装最新版本的 Web客户端。 li>
  • 非root用户用户的身份执行@Test