Aller au contenu

Votre premier script

Ce guide suit le workflow de base d’OculiX : voir → reconnaître → agir. À la fin, vous aurez un script qui repère un bouton à l’écran grâce à son image, et clique dessus.

  1. Lancez l’IDE OculiX.
  2. Cliquez sur New Script (ou File → New). L’IDE crée un bundle .sikuli — un dossier qui contient le script et ses images.
  3. Faites apparaître votre cible à l’écran. Pour cet exemple, ouvrez votre explorateur de fichiers ou un éditeur de texte, et choisissez un bouton visible — typiquement le bouton Save.
  4. Dans la barre d’outils, cliquez sur l’icône Take Screenshot (appareil photo). L’écran se fige, le curseur devient un viseur.
  5. Tracez un rectangle serré autour de la cible, puis relâchez le bouton de la souris.

OculiX insère l’image capturée dans le script sous forme de miniature cliquable :

click("save_button.png")

L’image est enregistrée dans le dossier .sikuli. Vous pouvez la renommer, la remplacer ou la réutiliser dans d’autres scripts.

Appuyez sur ▶ Run (ou Cmd/Ctrl + R). OculiX enchaîne trois opérations :

  1. Il prend une nouvelle capture de l’écran.
  2. Il y cherche save_button.png.
  3. Il déplace la souris sur le résultat et clique.

Si rien n’est trouvé, FindFailed apparaît dans la console — le plus souvent parce que la cible a bougé, a été masquée, ou parce que le seuil de similarité est trop strict.

Voici un script complet, qui tient dans une seule fenêtre et exporte un rapport quotidien :

from sikuli import *
# Ouvre l'application via son icône dans la barre des tâches (image capturée à l'avance)
click("app_icon.png")
wait("app_main_window.png", 10) # attend la fenêtre principale, 10 s max
# Parcourt le menu d'export
click("file_menu.png")
click("export_to_csv.png")
wait("save_dialog.png", 5)
# Saisit le nom du fichier dans le champ actif
type("filename_field.png", "rapport_" + getDate() + ".csv")
click("save_button.png")
# Attend la disparition du toast de confirmation avant de fermer
waitVanish("loading_spinner.png", 30)
popup("Terminé !")

Trois choses à retenir :

  • Aucun sélecteur. À aucun moment OculiX ne demande la classe CSS ou l’identifiant d’accessibilité du bouton.
  • wait() et waitVanish() synchronisent le script avec l’application : attendre qu’un élément apparaisse, ou disparaisse, avant de continuer.
  • Du Python standard. Le + getDate() est du Python pur — tout ce que Jython permet (syntaxe Python 2.7, accès complet à la JVM) est possible ici.

Par défaut OculiX exige 70 % de similarité entre l’image capturée et ce qu’il voit à l’écran. Avec de l’antialiasing, de la transparence ou un changement de thème, ce seuil peut être trop strict. Deux façons de l’assouplir :

# Pour un appel précis
click(Pattern("save_button.png").similar(0.65))
# Pour tout le script
Settings.MinSimilarity = 0.65

Cliquez sur Save. Votre bundle (mon-export.sikuli) est un dossier ordinaire :

  • Versionnable avec Git,

  • Partageable avec un collègue (en zip),

  • Planifiable avec cron ou le Planificateur de tâches Windows :

    Fenêtre de terminal
    java -jar oculixide.jar -l mon-export.sikuli -e