为满足我们的测试/执行需求,我们有一个Windows Server 2012 R2 VM,其中包含.bat
脚本,用于设置Selenium Enterprise Grid Hub和Chrome节点。
现在,当我通过直接登录VM使用这些脚本设置网格和节点时,测试执行将照常进行。但是,如果通过使用SSH调用远程调用相同的批处理脚本来进行设置,则会得到以下信息:
org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:32:19.891Z'
System info: host: 'TWV-BWN-A002', ip:, os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_181'
Driver info: driver.version: unknown
Command duration or timeout: 212 milliseconds
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:422)
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$new$0(JsonWireProtocolResponse.java:53)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
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:126)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
at com.fanniemae.lai.testauto.selenium.utils.WebConnector.getRemoteChromeDriver(WebConnector.java:74)
at com.fanniemae.lai.testauto.selenium.alteryx.AlteryxStepDefinition.setup(AlteryxStepDefinition.java:46)
我正在使用selenium-server-standalone-3.13.0以及chromedriver版本2.38和Chrome 69。
到目前为止,我尝试做的事情是将chromedriver.exe二进制文件的位置添加到系统PATH
中。还添加了一个webdriver.chrome.driver系统环境变量来保存相同的位置。
通过直接登录到VM或通过SSH远程调用脚本启动GRID时,我无法成功访问ip:port / grid / console。因此,在这一点上,我无法看到问题所在。有人遇到过类似的事情吗?
答案 0 :(得分:0)
根据您在问题中提到的配置,您正在使用:
您的主要问题是所使用的二进制版本之间的不兼容性:
支持 Chrome v65-67
支持 Chrome v68-70
因此 ChromeDriver v2.38 与 Chrome浏览器v69.0
之间存在明显的不匹配答案 1 :(得分:0)
尽管路径上具有Chromedriver.exe二进制文件,并且也作为系统环境变量提供,但我继续将其绝对路径作为参数传递给硒独立服务器jar和viola!奏效了!
java -Dwebdriver.chrome.driver = C:/full/path/to/chromedriver.exe -jar C:/full/path/to/selenium-server-standalone-3.13.0.jar -role node -hub http://ip:port/grid/register-浏览器“ browserName = chrome,version = ANY,maxInstances = 10,platform = WINDOWS”