Frage Jenkins unter Windows und GUI Tests ohne RDC


Wir haben eine Master-Slave-Konfiguration für Jenkins. Unser .NET-Projekt wird von einer Jenkins-Slave-Instanz erstellt, die unter Windows ausgeführt wird.

Es gibt eine Reihe von GUI-Tests, die jedoch anscheinend nur ausgeführt werden, wenn eine RDC-Sitzung (Remote Desktop Connection) geöffnet ist.

Beim Versuch, die Tests ohne RDC auszuführen, zeigt Jenkins keinen Fortschritt beim Testen. Dann verbinde ich mich jedoch mit dem Desktop des Slave und sehe das Hauptfenster der Anwendung, aber das UI-Testframework (Weiß) kann keine Aktionen ausführen.

Der Jenkins-Slave wird über Java Web Start gestartet.

Ich habe auf mehreren Webseiten gelesen, dass es leider nicht möglich ist, GUI-Tests ohne RDC-Sitzung durchzuführen.

Ich möchte nur bestätigen, dass es wahr ist und frage mich, ob es eine Problemumgehung gibt.


15
2018-04-16 16:07


Ursprung


Antworten:


Ihre Slave-Maschinen müssen sich auf einem Desktop befinden, bevor der Test ordnungsgemäß ausgeführt werden kann. Wir hatten das gleiche Problem.

Die Lösung bestand darin, die Testmaschine zu starten und sich automatisch am Desktop anzumelden. Um sicherzustellen, dass der Test NUR gestartet wird, nachdem der Desktop verfügbar war, haben wir einen geplanten Task hinzugefügt, der so konfiguriert ist, dass er bei der Benutzeranmeldung ausgeführt wird und den Jenkins-Slave über Java Web Start startet. Auf diese Weise würde Jenkins den Sklaven nur sehen, sobald der Desktop lief. Danach hat alles gut funktioniert.


12
2018-04-16 19:54



Es gibt eine andere Möglichkeit, es ohne Windows automatische Anmeldung zu tun (funktioniert für mich auf wenigen Maschinen).

1. Gehe zu Computer Management -> Dienste und Anwendungen -> Dienste -> Jenkins Slave -> Eigenschaften
2. Einloggen Registerkarte ausgewählt Lokales Systemkonto und prüfe Erlaube den Diensten, mit dem Desktop zu interagieren
3. Schließen Sie dieses Fenster, indem Sie auf klicken OKund starten Sie das Programm neu Jenkins Sklave Bedienung
4. Gehen Sie zu dem Verzeichnis, in dem sich Ihre Test-App befindet und wählen Sie Eigenschaften auf Ihrer App ausführbar
5. An Sicherheit Registerkarte klicken Bearbeiten...
6. Klicken Sie in einem neuen Fenster auf Hinzufügen..
7. Klicken Sie in einem neuen Fenster auf Standorte... und wählen Sie Lokaler Computer (oberste Option in der Liste), klicken Sie auf OK
8. Setzen SERVICE VOR ORT in den weißen Bereich des Fensters und klicken Sie auf Überprüfen Sie die Namen, klicken OK
9. Erlauben Volle Kontrolle Klicken Sie für diesen Benutzer auf OK, schließe alle Fenster

Das sollte alles sein. Lass es mich wissen, wenn es für dich funktioniert.


6
2017-10-27 14:35



Ich habe einen Jenkins-Cluster, der verschiedene Arten von GUI-Tests ausführt, win32, swing, selen. Sie führen rund um die Uhr Tausende von Tests unbeaufsichtigt aus. Hier ist meine Lösung:

  1. Wie man GUI-Tests am Leben erhält - RDC funktioniert nicht, die GUI-Anwendungen funktionieren nur gut, wenn die RDC-Sitzung aktiv ist. Ich habe verschiedene Wege ausprobiert, also versuchen Sie es nicht noch einmal. Ihr Test würde abgebrochen, nachdem das RDC-Fenster minimiert oder getrennt wurde. Die bisherige Lösung ist die Installation von VNC Server (ich verwende UltraVNC) als Dienst und stelle sicher, dass es während der Anmeldung gestartet wird. Stellen Sie außerdem sicher, dass Sie keine Verbindung zu Ihrem Testgerät mit RDC herstellen, da RDC die VNC-Sitzung unterbricht. Wenn möglich, verbinden Sie es auch mit dem VNC-Client. Aber das liegt an dir. Was ich mache ist, wenn ich etwas auf der Maschine debuggen muss, ich RDC dazu und es neu starten, um sicherzustellen, dass # 2 und # 3 gesetzt sind.

  2. Automatische Anmeldung - In SysInternalsSuite gibt es ein Tool autologon.exe, führen Sie es auf Ihrem Slave aus

  3. Auto Register Slave - Was Sie brauchen, ist Swarm Plugin - https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin . Schreiben Sie einen einfachen Stapel und fügen Sie eine Verknüpfung in Ihren Startordner ein. Jedes Mal, wenn sich Ihr Gerät automatisch anmeldet, wird es automatisch als Slave registriert.

Ich kombiniere # 2 und # 3 als einfache Batch-Datei:

autologon.exe <user> <domain> <password>
REM Here to make sure the logonCount is properly generated
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0xFFFF /f

start /min java -jar I:\CDC\jenkins\swarm-client-1.9-jar-with-dependencies.jar -executors 1 -fsroot c:\Jenkins -labels "Prod Win7 %ComputerName%" -master <Jenkins URL> -name farm-%ComputerName% -username <username> -password <password>

5
2017-07-18 08:44



Wie die anderen Antworten schon gesagt haben, braucht man eine Konfiguration, bei der sich die Windows-Maschine automatisch an einen echten Benutzer anmeldet, siehe andere Antworten für Details. Aber das war nicht genug für mich, ich musste Richten Sie einen UltraVNC-Server ein als Dienst laufen, um die Probleme zu lösen.

Auf der Website wird erwähnt, dass eine Anmeldung über RDP ein Problem für diesen Trick ist, d. H. Verbindung mit VNC oder Neustart nach RDP-Zugriff.


1