Verifica del testo del pulsante con applescript

1

Sto tentando di automatizzare CCleaner, finora posso avviare l'applicazione e fare clic sul pulsante che avvia il processo di pulizia, tuttavia mi affido a un delay per determinare quando dovrei passare alla parte successiva del 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

Non mi piace particolarmente questo approccio e preferirei rilevare quando CCleaner ha finito di funzionare (potrebbe essere molto prima o poi del ritardo di 10 secondi).

Mentre CCleaner è inattivo, il testo del pulsante è "Esegui pulizia"; quando CCleaner è attivo, il testo del pulsante è "Annulla". Qualcuno può consigliare come controllo il testo sul pulsante? Se so come farlo posso fare qualcosa del genere:

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
    
posta phatypus 21.02.2013 - 09:15
fonte

1 risposta

0

Puoi controllare tutti i pulsanti della finestra e attendere fino a quando uno è intitolato come desideri:

property btnTitle : "Run Cleaner"

set btnFound to false

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

tell application "System Events"
    tell application process "CCleaner"
        click button btnTitle of window 1
        delay 1

        -- Start checking every seconds if window 1 contains a button titled "Run Cleaner"      
        repeat while not btnFound
            repeat with btn in buttons of window 1
                try -- Some buttons don't have title which would return an error if not in try
                    if (title of btn is btnTitle) then
                        set btnFound to true
                    end if
                end try
            end repeat
            delay 1
        end repeat

    end tell
end tell

if btnFound then
    -- Do more stuff
end if
    
risposta data 24.02.2013 - 20:00
fonte

Leggi altre domande sui tag