cómo verificar si un elemento específico de la interfaz de usuario está enfocado en el script de Apple

He buscado mucho para esto, pero todas las respuestas hablan de cómo enfocar una ventana completa (o un diálogo ... que sigue siendo una ventana en realidad) a través de activateetc.

Pero no pude encontrar ninguna forma de detectar si se seleccionó un elemento específico de la interfaz de usuario, si estaba enfocado, etc.

ingrese la descripción de la imagen aquí

Escribí una secuencia de comandos de Apple que salta automáticamente a Alfred Create Custom Web Search, pero la secuencia de comandos falló cuando la pestaña de funciones no se seleccionó de forma predeterminada. Así es como se ve mi código :

tell application "System Events"
    keystroke "," using command down
    delay delay_time
    tell process "Alfred Preferences"
        delay delay_time
        -- hack: to ensure that the the "Default results" button isn't selected
        -- by default, we select another tab first, then select the "features" tab
        click button "Appearance" of toolbar 1 of window 1
        click button "Features" of toolbar 1 of window 1
        delay delay_time
        UI elements of scroll area 1 of window 1
        -- bring the left menu to focus first (see hack above, without hack this would work sometimes only)
        keystroke tab

Preferiría no hacer este truco desagradable (que hace que la aplicación parpadee rápidamente entre pestañas cada vez que llamo al atajo). Prefiero hacer una declaración if else simple. ¿Ideas?

Respuestas (1)

Esto definitivamente funciona en mi sistema que ejecuta Alfred 3. Es posible que deba ajustar los tiempos de demora, pero tal como están ahora, este script funciona para mí.

activate application "Alfred Preferences"
delay 1.5
tell application "System Events"
    tell process "Alfred Preferences"
        click button "Features" of toolbar 1 of window "Alfred Preferences" of application process "Alfred Preferences" of application "System Events"
        delay 1
        set selected of row 3 of table 1 of scroll area 1 of window "Alfred Preferences" of application process "Alfred Preferences" of application "System Events" to true
        delay 1
        click button "Add Custom Search" of tab group 1 of window "Alfred Preferences" of application process "Alfred Preferences" of application "System Events"
    end tell
end tell
¿Cuál es la diferencia entre "axpress" y el evento del sistema "clic"? Porque probé el evento de clic en una coordenada y no pasó nada.
Intento limitarme al editor de secuencias de comandos solo la mayor parte del tiempo, pero cuando me quedo atascado y no sé qué diablos hacer, enciendo la aplicación del navegador de interfaz de usuario y selecciono los elementos de la aplicación que estoy tratando de crear. generará los comandos de AppleScript para mí y los colocará directamente en el editor de scripts. Entonces, para responder a su pregunta, "AXPress" es el comando que UI Browser generó para mí
¿Es esta la aplicación de navegador ui de la que estás hablando? pfiddlesoft.com/uibrowser
Ese es el que estaba hablando
Me temo que no funciona... usando su sintaxis reemplazó mi propio código con this , y simplemente no funciona o al menos no de manera confiable.
Si sustituye todo ese fragmento de código en mi respuesta en su secuencia de comandos original, debería funcionar. Funciona en mi extremo