C# System.InvalidOperationException未经处理HResult=-2146233079消息=无法创建新服务:ChromeDriverService

C# System.InvalidOperationException未经处理HResult=-2146233079消息=无法创建新服务:ChromeDriverService,c#,selenium,selenium-webdriver,selenium-chromedriver,selenium-grid,C#,Selenium,Selenium Webdriver,Selenium Chromedriver,Selenium Grid,我正在尝试使用SeleniumGrid和C远程控制Chrome浏览器。它过去可以工作,但自从我在我的机器B上安装了一个新的Windows映像后,它就不再工作了。但是,我可以在两台计算机上本地使用Selenium,所以我认为这不是chromedriver的问题。对于远程控制,我分别在机器A和机器B中运行以下命令: java -jar C:\Users\FlcUser\Downloads\selenium-server-standalone-3.141.5.jar -role hub -host 1

我正在尝试使用SeleniumGrid和C远程控制Chrome浏览器。它过去可以工作,但自从我在我的机器B上安装了一个新的Windows映像后,它就不再工作了。但是,我可以在两台计算机上本地使用Selenium,所以我认为这不是chromedriver的问题。对于远程控制,我分别在机器A和机器B中运行以下命令:

java -jar C:\Users\FlcUser\Downloads\selenium-server-standalone-3.141.5.jar -role hub -host 10.1.1.14

java -Dwebdrive.chrome.drive="C:\Temp\chromedriver.exe" -jar C:\Temp\selenium-server-standalone-3.141.5.jar -role node -hub http://10.1.1.14:4444/grid/register
节点已成功注册,然后我运行此C代码我不知道我的注释是否必要,但它不会更改错误:

ChromeOptions options = new ChromeOptions();
        //options.BinaryLocation = "C:\\Temp\\chromedriver.exe";
        IWebDriver driver = new RemoteWebDriver(new Uri("http://10.1.1.14:4444/wd/hub"), options.ToCapabilities(), TimeSpan.FromSeconds(180));
我得到这个错误:

无法创建新服务:ChromeDriverService

我读了很多关于它的书,我尝试了很多东西。我更新了一切。我已经确保我的chromedriver版本与我的浏览器兼容,并且在这两台机器上都有最新版本的Java

以下是我在cmd中获得的日志:

机器A:

17:48:23.746 INFO [DefaultGridRegistry.add] - Registered a node http://10.24.25.237:19016
17:50:19.814 INFO [RequestHandler.process] - Got a request to create a new session: Capabilities {browserName: chrome, goog:chromeOptions: {}}
17:50:35.155 INFO [TestSlot.getNewSession] - Trying to create a new session on test slot {server:CONFIG_UUID=2dac93b3-8952-4c62-bcee-3c5febe21545, seleniumProtocol=WebDriver, browserName=chrome, maxInstances=5, platformName=WIN10, platform=WIN10}
机器B:

21:48:31.497 INFO [ActiveSessionFactory.apply] - Capabilities are: {
"browserName": "chrome",
"goog:chromeOptions": {}}
21:48:31.497 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
这是Visual Studio抛出的异常:

System.InvalidOperationException was unhandled
  HResult=-2146233079
  Message=Unable to create new service: ChromeDriverService
Build info: version: '3.141.5', revision: 'd54ebd709a', time: '2018-11-06T11:58:47'
System info: host: 'FLCOMPACT', ip: '10.1.1.25', os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_191'
Driver info: driver.version: unknown (SessionNotCreated)
  Source=WebDriver
  StackTrace:
       at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
       at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
       at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
       at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
       at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities, TimeSpan commandTimeout)
       at SeleniumPrueba.Program.Main(String[] args) in d:\SeleniumDemo\SeleniumPrueba\Program.cs:line 21
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
最后,我在其他电脑上也试过同样的方法,但我也犯了同样的错误,所以我做错了。我认为它与Java或chromedriver有关,因为我曾经毫无问题地运行这个VS代码解决方案。我还通过NuGet更新了VisualStudio中的库


如何解决此问题?

问题似乎在于您用于启动Selenium网格节点的命令,而不是:

java -Dwebdrive.chrome.drive="C:\Temp\chromedriver.exe" -jar C:\Temp\selenium-server-standalone-3.141.5.jar -role node -hub http://10.1.1.14:4444/grid/register
应该是:

java -Dwebdriver.chrome.driver=C:/Temp/chromedriver.exe -jar C:/Temp/selenium-server-standalone-3.141.5.jar -role node -hub http://10.1.1.14:4444/grid/register
注A:键是webdriver.chrome.driver,但不是webdrive.chrome.drive


注B:确保网格节点上的ChromeDriver二进制文件位于C:/Temp/

谢谢您的建议。我的错误是在没有r的情况下写这个命令。然而,我运行它的权利和结果是一样的。同样的错误。。。有时,与此相反,无法创建新的服务异常发生的情况是,它从未打开浏览器,并且在执行新的RemoteWebDriver方法时出现超时通过IDE清理项目工作空间,并使用所需的依赖项构建项目并执行测试,您应该没事。是的,我清理了解决方案,甚至只使用这两行创建一个非常简单的项目。我将selenium版本141.5更改为141.0,因为它是我在IDE中安装的C库。我在节点机器B中尝试了相同的代码,但在本地,它成功地打开了浏览器…不,它可以执行相同的操作,但在本地:我编写了新的ChromeDriver,而不是新的RemoteWebDriver,并在没有Selenium RC的机器B上运行它。为了确保chromedriver不是问题。。。