Vérification du texte du bouton avec AppleScript

1

J'essaie d'automatiser CCleaner. Jusqu'à présent, je peux démarrer l'application et cliquer sur le bouton qui lance le travail de nettoyage. Toutefois, je m'appuie sur delaypour déterminer le moment où je devrais passer à la partie suivante du script.

tell application "/Applications/CCleaner.app" to activate

tell application "System Events"
    tell application process "CCleaner"
        click button "Run Cleaner" of window 1
        delay 10
    end tell
end tell

Je n'aime pas particulièrement cette approche et préférerais détecter le moment où CCleaner est terminé (cela peut être beaucoup plus tôt ou plus tard que le délai de 10 secondes).

Lorsque CCleaner est inactif, le texte du bouton est "Run Cleaner"; lorsque CCleaner est actif, le texte du bouton est "Annuler". Quelqu'un peut-il me dire comment vérifier le texte sur le bouton? Si je sais comment faire cela, je peux faire quelque chose comme ceci:

tell application "/Applications/CCleaner.app" to activate

tell application "System Events"
    tell application process "CCleaner"
        click button "Run Cleaner" of window 1
        delay 10
    end tell
end tell

repeat
    # ?
    # ? if button text is "Run Cleaner" then exit repeat
    # ?
    delay 1
end repeat

# do more stuff
phatypus
la source

Réponses:

0

Vous pouvez vérifier chaque bouton de la fenêtre et attendre que celui-ci soit intitulé comme vous le souhaitez:

property btnTitle: "Run Cleaner"

définir btnFound à false

dire à l'application "/Applications/CCleaner.app" d'activer

dire à l'application "événements système"
    dire le processus de demande "CCleaner"
        clic sur le bouton btnTitre de la fenêtre 1
        retarder 1

        - Commencez à vérifier toutes les secondes si la fenêtre 1 contient un bouton intitulé "Run Cleaner"      
        répéter sans être btnFound
            répéter avec btn dans les boutons de la fenêtre 1
                try - Certains boutons n’ont pas de titre, ce qui renverrait une erreur s’il n’était pas dans try
                    si (le titre de btn est btnTitle) alors
                        Définissez btnFound sur true
                    fin si
                fin essayer
            fin de répéter
            retarder 1
        fin de répéter

    fin dis
fin dis

si btnFound alors
    - Faites plus de choses
fin si
Bibou
la source