Selen RemoteWebDriver c# - System.InvalidOperationException

Habe ich eine Beispiel-UI-test-Projekt mit v3.4.0 von Selen.WebDriver.

Funktioniert alles wunderbar, wenn ich führen Sie die tests gegen ein lokales Fahrer, aber ich möchte, um die Dinge in der Arbeit mit Selenium Grid 2.

Sobald ich versuche zum instanziieren einer neuen RemoteWebDriver bekomme ich eine exception mit wenig Details.

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

Hinweis: GridUrl ist "http://localhost:4444/wd/hub"

Löst eine System.InvalidOperationException mit dem StackTrace wie folgt:

   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

Hub-Konfiguration

Ich habe v3.4.0 des hub-vor Ort läuft mit folgender Konfiguration:

{
  "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
}

Hub gestartet mit:

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

Diese hat kommen OK und sieht ausgeführt werden.
Selen RemoteWebDriver c# - System.InvalidOperationException

Knoten-Konfiguration

Ich habe versucht, eine Reihe von Knoten (chromedriver.exe, IEDriverServer.exe und geckodrvier.exe). Keine dieser arbeiten mit der RemoteWebDriver. Alle von Ihnen sind in einem Verzeichnis, das Hinzugefügt wurde, um meine system-variable PATH.

Chrome config

{
  "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": {}
}

Knoten gestartet mit:

java-jar selenium-server-standalone-3.4.0.jar -Rolle-Knoten -nodeConfig chromeNodeConfig.json

Den anderen Knoten configs sind weitgehend die gleichen, außer für die verschiedenen browser-Namen und-ports.

Einmal alle Knoten gestartet werden, die Konsole sieht wie folgt aus:
Selen RemoteWebDriver c# - System.InvalidOperationException

Ich bin nicht in der Lage, viel von der Ausnahme. Ist es eine Versionierung Problem der Treiber, die ich habe? Ich habe versucht, die Anpassung meiner DesiredCapabilities um sicherzustellen, dass ich bin, die mit denen in den Knoten Konfiguration. Alles sieht gut aus.


Update

Als angefordert, ich bin das hinzufügen von ein wenig mehr Details, wie ich versuche, um einen browser zu starten. Keiner der Browser arbeiten mit der RemoteWebDriver dass Sie mit der lokalen Fahrer. Zeigt der Chrome-Beispiel - nur der Unterschied zwischen den einzelnen ist in Bezug auf die Fähigkeiten, die ich bin übergeben Sie in der Basisklasse Konstruktor.

In meiner test-Klasse

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

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

In meiner base Klasse mache ich die folgenden

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
    }
}
  • Vielleicht möchten Sie überprüfen Sie den task-manager und stellen Sie sicher, dass Sie nicht haben, eine Reihe von Schurken browser-Treiber Instanzen noch laufen. Dies kann passieren, wenn lokal Debuggen. Dies verursachte eine Reihe von Problemen für uns.
  • Danke für die Anregung. Ich werde mal schauen morgen!
  • Welchen browser versuchst du zu starten? Kannst du uns mehr code, wie du tust das?
  • Ich habe das update wie gewünscht. @GrayDwarf - danke für die Anregung. Ich hatte eine Reihe von ChromeDriver Prozesse laufen, aber meine Maschine neu gestartet und wieder lief der test und immer noch die gleiche exception.
InformationsquelleAutor obaylis | 2017-05-03
Schreibe einen Kommentar