Ich versuche, UI-Automatisierung mit einem Jenkins-Job, der auf einer Windows-VM als Jenkins-Slave als Bestandteil einer CI-Pipeline ausgeführt wird. Ich habe ein Problem, dass die Bildschirmauflösung sehr niedrig eingestellt ist (1024, 768) Wie kann ich die Standardauflösung ändern, so dass wenn Jenkins öffnet eine neue Verbindung wird es mit einer größeren Auflösung sein?Ändern Sie die Standardauflösung für UI-Tests mit Jenkins
Antwort
Haben Sie Ihren Webapp-Container als lokalen Dienst gestartet (Tomcat oder Jenkins-Slave?). Der Punkt ist, dass Windows-Dienste keine GUI haben können und es ist sogar ein Wunder, dass es WebDriver irgendwie schafft, ein 1024.768-Fenster zu öffnen :) Starten Sie Ihren Webapp-Container als Konsolenanwendung mit einem normalen Benutzer.
Theoretisch läuft Powerscript-Befehl als Build-Schritt:
set-displayresolution 1920 1080 -Force
sollte es tun, aber ich habe ein paar Probleme mit jetzt ...
Was definitiv gearbeitet hat: eine Verbindung mit zu Ihrer VM RDP mit der gewünschten Auflösung, dann trennen. Die Tests werden in der zuletzt verwendeten Auflösung ausgeführt.
run >> services.msc >> Stoppen Sie den Systemdienst, den Sie Auflösung ändern möchten (Jenkins.exe) >> Rechtsklick >> Eigenschaften >> Anmelden TAB >> Lokales Systemkonto >> Check Erlaube Dienst zu interagieren mit Desktop >> dann wird es die Auflösung des Monitors, den Sie gerade verwenden.
Stellen Sie sicher, dass browser.driver.manage(). Window(). Maximize(); auf dem Ihr onPrepare: metod von protractor.conf.js
Ich habe das gleiche Problem habe bei dem Versuch, UI-Tests auf Jenkins
Problem ausführen: Standardmäßig jenkins lief als Windows-Dienst und haben keinen Zugang zu laufen Tests auf dem Desktop.
So beheben:
- Lauf >> services.msc >> das System-Dienst beenden Jenkins.exe
- Rechtsklick auf Jenkins.exe >> Eigenschaften >> Starttyp - Handbuch >> speichern
- erstellen eine ausführbare Datei (.bat, .exe, ...) speichern sie es irgendwo, und geben sie:
java -jar "C:\path\to\Jenkins\jenkins.war" --httpPort=8081
- add Verknüpfung dieser ausführbaren Datei auf Windows Autorun-Verzeichnis
Es läuft Jenkins auf Desktop (nicht Windows-Dienst), was Ihre UI-Tests gibt
Wenn Ihre UI Automation laufen zu lassen Wenn Sie Chrome verwenden, könnte es hilfreich sein, Headless Chrome auszuführen. Auf diese Weise spielt die Bildschirmauflösung des Slaves keine Rolle, da Sie die Auflösung angeben können, die Sie verwenden möchten.
Ich konnte dies mit diesen Chrome Start Argumenten erreichen auf einem Windows Server Jenkins Slave ausgeführt wird:
--headless --window-size=1920,1080
In meinem Fall mit Nachtwache, das ist ein Ausschnitt aus der Nachtwache ist.JSON-Datei:
"desiredCapabilities": {
"browserName": "chrome",
"chromeOptions": {
"args": ["--window-size=1920,1080", "--headless"]
},
// ...
ich auch die gleichen Probleme habe, wenn mein WebDriver Fenster Auflösung 1040x784 ist, wenn in Jenkins (1936x1056 beim Laufen auf meinem Desktop, gleiche Maschine) fullscreened – Steve