Si nous avons un serveur de test sans tête exécutant sikuli (les configurations ubuntu et windows sont nécessaires), comment le faire fonctionner sans moniteur physique et de préférence pour autant de résolutions d'écran que possible.
Sikuli a fonctionné avec succès en mode sans tête (aucun moniteur physique connecté)
Ubuntu: vérifiez Xvfb.
Windows: installez le pilote d’affichage sur la machine (sans tête) à partir des ajouts d’invités de virtualbox et utilisez TightVNC pour définir à distance la résolution à partir d’une autre machine.
Étapes détaillées pour Windows 7
Suppose que:
pas:
Extraction de pilote
-Pour extraire les pilotes 32 bits vers "C:\Drivers", procédez comme suit:
-Pour les pilotes 64 bits:
Aller au gestionnaire de périphériques
ajouter du matériel
Redémarrez et connectez-vous avec le visualiseur VNC. Vous devriez maintenant pouvoir changer la résolution de l'écran
autres informations précieuses sur tableau de bord .
Pour ceux qui cherchent à automatiser sur des machines Windows ec2, cela a fonctionné pour moi: http://www.allianceglobalservices.com/blog/executing-automation-suite-on-disconnectedlocked-machines
En résumé, j'ai utilisé RDC pour me connecter, mettre le code suivant dans un fichier de traitement par lots sur un poste de travail distant, double-cliquez dessus et sikulix a commencé à travailler à distance (me chassant de RDC en même temps). Notez que les machines Windows ec2 ont une valeur par défaut de 1024x768 lorsque tscon prend le contrôle, ce qui est peut-être trop petit. TightVnc peut donc être utilisé pour augmenter la résolution à 1280x1024 avant l'exécution.
tscon.exe 0 /dest:console
tscon.exe 1 /dest:console
tscon.exe 2 /dest:console
tscon.exe 3 /dest:console
START /DC:\Sikulix /WAIT /B C:\Sikulix\runsikulix.cmd -d 3 -r C:\test.sikuli -f C:\Sikulix\log.txt -d C:\Sikulix\userlog.txt
SikuliX a fonctionné dans un véritable mode sans tête dans GCE avec un système client Windows 2016. Il faut du ruban adhésif et d’autres dispositifs de Rube Goldberg pour fonctionner, mais cela peut être fait.
Le problème est que, pour GCE (et probablement AWS et d’autres clients d’environnement cloud), vous n’avez pas de carte vidéo virtuelle ni d’affichage. Par conséquent, sauf s’il existe une connexion RDP ouverte avec le client, il n’a pas d’écran. et SikuliX/OpenCV obtiendra un poste de travail noir 1024x768 et échouera.
La question est donc de savoir comment créer une connexion RDP sans écran réel, où que ce soit. Je l'ai fait en utilisant Xvfb (mémoire tampon d'images virtuelle X Windows). Cela nécessite toutefois une deuxième machine virtuelle. Xvfb fonctionne sous Linux. L’autre pièce du puzzle est xfreerdp 2.0. La version 2.x est requise pour la compatibilité avec les versions récentes de Windows. 1.x est inclus avec certaines distributions Linux; 2.x devra peut-être être construit à partir de sources, selon le type de Linux que vous utilisez. J'utilise CentOS, ce qui m'a obligé à construire le mien.
Les commandes permettant d'établir la session RDP sans tête, une fois les pièces en place, ressemblent à ceci:
/usr/bin/Xvfb :0 -screen 0 1920x1080x24 &
export DISPLAY=:0.0
/usr/local/bin/xfreerdp /size:1920x1080 /u:[WindowsUser] /p:"[WindowsPassword]" /v:[WindowsTarget]
Dans notre environnement, nous avons automatisé cette opération dans le cadre du travail de création lancé par Jenkins. Pour que cela fonctionne sous l'esclave Jenkins, il était également nécessaire d'exécuter l'esclave Jenkins en tant que processus utilisateur, plutôt qu'en tant que service ... Pour ce faire, vous pouvez activer la connexion automatique à l'administrateur et définir le script de lancement de l'esclave comme une exécution. connexion) commande.