Исключение System.InvalidOperationException не обработано. HResult = -2146233079 Сообщение = Невозможно создать новый сервис: ChromeDriverService - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь использовать Selenium Grid и C # для удаленного управления браузером Chrome.Раньше он работал, но поскольку я установил новый образ Windows на свой компьютер B, он больше не работает.Тем не менее, я могу использовать Selenium локально на обоих компьютерах, поэтому я считаю, что это не проблема хром-драйвера.Для удаленного управления я запускаю следующие команды на машине 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 (https://java.com/en/download/, на обеих машинах).

Это журналы, которые я получаю в 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 без проблем.Кстати, я также обновил библиотеки в Visual Studio через NuGet.

Может кто-нибудь помочь мне?

Спасибо заранее за ваше время.

1 Ответ

0 голосов
/ 15 ноября 2018

Скорее всего, проблема в команде, которую вы использовали для запуска Узел решетки селена , который вместо:

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 на узле Grid размещен в C:/Temp/

...