Selenium RemoteWebDriver c # - System.InvalidOperationException

Eu tenho um projeto de teste de interface do usuário de amostra usando a v3.4.0 do Selenium.WebDriver.

Tudo funciona bem quando executo os testes em um driver local, mas quero que as coisas funcionem usando o Selenium Grid 2.

Assim que tento instanciar um novo RemoteWebDriver, recebo uma exceção com poucos detalhes.

Driver = new RemoteWebDriver(new Uri(GridUrl), Capabilities);     

Nota: GridUrl é "http: // localhost: 4444 / wd / hub"

Lança um System.InvalidOperationException com StackTrace da seguinte maneira:

   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)
   at xxxx.Ui.Tests.SeleniumTests.TestInitialize() in C:\Users\xxxx\Documents\Visual Studio 2015\Projects\xxxx.Ui.Tests\xxxx.Tests\PersonTests.cs:line 38
Configuração do hub

Eu tenho a v3.4.0 do hub em execução localmente com a seguinte configuração:

{
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "capabilityMatcher":"org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "cleanUpCycle": 5000,
  "role": "hub",
  "debug": false,
  "browserTimeout": 0,
  "timeout": 1800
}

O hub começou com:

hub java -jar selenium-server-standalone-3.4.0.jar -role

Isso deu certo e parece estar em execução.

Configuração do nó

Eu tentei vários nós (chromedriver.exe, IEDriverServer.exe e geckodrvier.exe). Nenhuma delas funciona com o RemoteWebDriver. Todos eles estão em um diretório que foi adicionado à minha variável PATH do sistema.

Configuração do Chrome
{
  "capabilities":
  [
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5556,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://localhost:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {}
}

Nó iniciado com:

java -jar selenium-server-standalone-3.4.0.jar-nó da função -nodeConfig chromeNodeConfig.json

As outras configurações do nó são basicamente as mesmas, exceto pelos diferentes nomes e portas do navegador.

Depois que todos os nós são iniciados, o console tem a seguinte aparência:

Eu não sou capaz de obter muito com a exceção. É uma questão de versão dos drivers que tenho? Tentei personalizar meus DesiredCapabilities para garantir que estou correspondendo aos da configuração do nó. Tudo isso parece bem.

Atualizar

Conforme solicitado, estou adicionando um pouco mais detalhadamente de como estou tentando iniciar um navegador. Nenhum dos navegadores trabalha com o RemoteWebDriver, ao contrário dos drivers locais. Mostrando o exemplo do Chrome - a única diferença entre cada um deles é em relação aos Recursos que estou passando para o construtor da classe base.

Na minha aula de teste

[TestClass]
public class PersonTests : PersonTestBase
{
    public PersonTests() 
        : base(DesiredCapabilities.Chrome())
    {
    }

    [TestCategory("Chrome")]
    [TestMethod]
    public void Chrome_ShouldCreatePlacement()
    {
        this.ShouldCreatePerson();
    }        
}

Na minha classe base, estou fazendo o seguinte

public abstract class PersonTestBase
{
    protected IWebDriver Driver;
    protected ICapabilities Capabilities;
    protected string TargetUrl;
    protected string GridUrl;

    protected PersonTests(ICapabilities capabilities)
    {
        this.Capabilities = capabilities;
    }

    [TestInitialize]
    public void TestInitialize()
    {
        TargetUrl = "http://urlOfMyWebsite";
        GridUrl = "http://localhost:4444/wd/hub"

        Driver = new RemoteWebDriver(new Uri(GridUrl), Capabilities);            
    }

    [TestCleanup]
    public void TestCleanup()
    {
        Driver.Quit();
    }

    protected void ShouldCreatePerson()
    {
        Driver.Navigate().GoToUrl(TargetUrl);

        //rest of test code ommitted
    }
}

questionAnswers(3)

yourAnswerToTheQuestion