Damit wir Front-to-Back-Web-UI-Tests durchführen können, verwenden wir Selenium und ChromeDriver, um Seitenladevorgänge als Teil unseres Testpakets zu automatisieren.Running Selenium Server & ChromeDriver als Windows-Dienst
Dies verhält sich während des Entwicklertests (auf dem lokalen Computer eines Entwicklers) wie erwartet, aber wir haben Schwierigkeiten, diese Prüfungen als Teil unserer kontinuierlichen Integrationsentwicklung durchzuführen.
Unsere Server-Anlage ist * NIX-basiert, und unsere gesamte CI-Infrastruktur läuft auf diesen Maschinen. Damit wir Chrome unter Windows (unseren Liefermechanismus) testen können, haben wir ein Selenium Grid konfiguriert. Wenn die CI-Tests ausgeführt werden, greifen sie auf das Grid zu, um einen Windows-Knoten zu finden, auf dem die Tests ausgeführt werden.
Wir hatten einen Windows-Desktop, der ausschließlich zum Ausführen dieser Tests bereitgestellt wurde. Dies enthält unseren Standard-Enterprise-Build von Windows 7. Dieser Computer wird regelmäßig in Übereinstimmung mit den Aktualisierungsrichtlinien der IT-Abteilung neu gestartet.
Um sicherzustellen, dass der Selenium-Server immer läuft, haben wir den Selenium-Server (im "Knoten" -Modus) als Windows-Dienst hinzugefügt. Der Selenium-Server ist so konfiguriert, dass ChromeDriver gestartet wird, um die simulierte Benutzerinteraktion aufzurufen.
Beim Ausführen der Tests von CI schlagen sie jedoch aufgrund von Timeout fehl. Unsere Arbeitstheorie ist, dass der Systembenutzer, der den Dienst ausführt, keine interaktiven Fenster erstellen kann. Eine Websuche hat Bezug auf das Problem "Sitzung 0" genommen, aber mit wenig bis keinem konstruktiven Ratschlag, wie man weiter vorgeht.
Das manuelle Starten des Selenium Server-Prozesses aus einer interaktiven Sitzung ist keine praktikable Lösung, da dies zu brüchigen Tests führt, die aufgrund eines Infrastrukturproblems fehlschlagen und nicht eine echte Testregression darstellen.
Wie können wir eine Instanz von Selenium Server haben über einen Windows-Dienst gestartet, wenn das System neu startet, das in der Lage ist Chrome Instanzen starten?
Gibt es eine bestimmte Version von Chrome, von der Sie wissen, dass sie in Session 0 funktioniert? Wenn ich einfach herunterstufen kann, dann wäre das eine Option. – jwa
Mit Versionen von Chrome vor 38 funktioniert alles als Windows-Service gut. Seit Version 38 - mein Windows-Dienst mit Selen funktioniert nicht. Downgrade Chrome hat das Problem für mich gelöst – razon
Ich kann bestätigen was @razon sagt. Chrome 37 ist die letzte bekannte Version, die funktioniert, wenn sie unter Dienst ausgeführt wird. –