Comprobando el texto del botón con applecript

1

Estoy intentando automatizar CCleaner, hasta ahora puedo iniciar la aplicación y hacer clic en el botón que inicia el trabajo de limpieza. Sin embargo, confío en un delay para determinar cuándo debo pasar a la siguiente parte de la 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

No me gusta este enfoque en particular y preferiría detectar cuando CCleaner haya terminado de ejecutarse (puede ser mucho antes o después de la demora de 10 segundos).

Mientras CCleaner está inactivo, el texto del botón es "Ejecutar limpiador"; cuando CCleaner está activo, el texto del botón es "Cancelar". ¿Alguien puede aconsejar cómo verifico el texto en el botón? Si sé cómo hacer eso, puedo hacer algo como esto:

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

1 respuesta

0

Puede marcar todos los botones de la ventana y esperar hasta que se titule el que desee:

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
    
respondido por el Bibou 24.02.2013 - 20:00

Lea otras preguntas en las etiquetas