web-dev-qa-db-fra.com

Comment faire fonctionner Sikuli en mode sans tête

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.

14
Amr Lotfy

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:

  1. Machine A: être une machine sans tête, Windows 7, avec le serveur vnc prêt (par exemple, TightVNC serveur installé et en attente de connexions).
  2. Machine B: sera utilisé pour configurer à distance le pilote d’affichage virtuel sur la machine A.

pas:

  1. Téléchargez le fichier iso des additions invité de virtualbox sur la machine A depuis ici (pour obtenir la dernière version, consultez la dernière version ici et téléchargez VBoxGuestAdditions_x.y.z.iso) enter image description here
  2. Extraire le fichier iso (éventuellement avec winrar) dans un répertoire (appelons-le dossier D) enter image description here
  3. en utilisant la commande Promd cd to D folder
  4. Extraction de pilote 

    -Pour extraire les pilotes 32 bits vers "C:\Drivers", procédez comme suit:

    • VBoxWindowsAdditions-x86/extract/D = C:\Drivers

    -Pour les pilotes 64 bits:

    • VBoxWindowsAdditions-AMD64/extract/D = C:\Pilotes

    drivers extracted

  5. Aller au gestionnaire de périphériques my computer/manage

  6. ajouter du matérielenter image description here

  7. List item

  8. List item

  9. List item

  10. List item

  11. List item

  12. List item

  13. List item

  14. List item

  15. List item

  16. Redémarrez et connectez-vous avec le visualiseur VNC. Vous devriez maintenant pouvoir changer la résolution de l'écran enter image description here

autres informations précieuses sur tableau de bord .

24
Amr Lotfy

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
1
Adam Lane

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.

1
Paul Chambre