Sikuli : programmez avec des screenshots
Il nous arrive souvent de devoir refaire la même chose encore et encore sur nos ordinateurs. Et pourtant, ce sont eux les machines! Évidemment les plus érudits ont déjà tout un tas de scripts bash (ou un autre langage obscur) pour leur simplifier la vie.
Mais il reste toujours certaines interactions qu’on n’arrive pas à automatiser : celles qui touchent aux interfaces graphiques (lorsqu’aucune API n’est présente/utile). Je vous présente donc Sikuli, le moyen d’automatiser simplement ce qu’on voit à l’écran à partir de screenshots.
Installation
Sikuli est un programme open-source en Jython (un interpréteur Python en Java, silence dans le fond de la salle~) et dispose de versions compatibles avec Windows, MacOS et évidemment Linux (32 ou 64bits). Je vous renvoie donc sur la page de téléchargements du projet pour télécharger la dernière version.
Assurez-vous d’avoir toutes les dépendances:
Rien à compiler, décompressez le tout et lancez sikuli-ide.sh
Scripts simples
Je ne pense pas que tout vous expliquer soit réellement utile ici, l’application est très intuitive. Les instructions principales sont évidemment click(…), rightClick(…) ou type(“…”). Tout est renseigné dans la colonne de gauche.
Pour insérer un screenshot je vous recommande le raccourci clavier Ctrl+Maj+2 ou, s’il ne fonctionne pas à l’endroit où vous souhaitez le faire, utilisez le bouton de screenshot de Sikuli qui a un délai configurable dans les préférences.
Voici par exemple un script qui change la résolution de mon écran (oui, je sais, je pourrais le faire avec xrandr mais ici c’est vraiment à la portée de n’importe qui) :
Scripts un peu plus intelligents
Bien sûr Sikuli est proche d’un vrai langage de programmation et permet donc des scripts plus puissants, plus intelligents. On peut faire des boucles, des conditions, des wait, etc.
Voici quelques exemples simples qui parlent d’eux-même.
type(value + "\n")
Beaucoup d’autres exemples sont consultables dans la documentation de Sikuli.
C’est bien beau pour les n00bs, mais pour les geeks comme moi?
Bon j’ai du me détruire le cerveau à trouver une utilité à Sikuli pour les geeks durs de dur qui savent tout faire en bash… Et j’ai trouvé!
Si vous développez des interfaces graphiques, Sikuli peut faire des unitTests sur celles-ci ! On peut aussi utiliser les possibilités de Sikuli dans ses propres logiciels Java.
On peut aussi interagir avec des grosses méchantes applications web en AJAX… Si vous trouvez d’autres utilités, laissez-les en commentaire 🙂
Lancer un script
On peut évidemment lancer un script depuis l’interface graphique de Sikuli mais le plus intéressant est de le faire depuis un terminal ou un raccourci. Rien de plus simple, il suffit d’appeler Sikuli avec le paramètre –run :
J’en ai même un assigné à un raccourcis clavier (Google est votre ami, les raccourcis clavier dépendent de votre environnement graphique)
Ça m’a l’air très sympathique ce petit langage pour automatiser certaines tâches 🙂 Je le garde sous la main.
Les dépendances libcvaux4 libhighgui4 sont-elles disponibles sous Debian Squeeze ?
Merci, pour l’article !!
Ce logiciel est extra, à titre indicatif il fonctionne sur Kubuntu 9.10 après l’avoir préalablement compilé.
Fort sympathique, fallait y penser ! :p
@egan Je pense que sous Debian c’est libcvaux1 et libhighgui1 mais je ne peux pas t’assurer la compatibilité avec cette version. Il faudra peut-être trouver des versions plus récentes de cette librairie.
@Tito
Perso, sous Kubuntu 9.10, il n’y a pas les bonnes version de OpenCV, mais en compilant à la mano Sikuli, çà fonctionne quand même bien.
yu8gjc