Applescript: "no se puede obtener el grupo de pestañas 1 de la ventana" (El Capitán)

5

El siguiente es un applecript que uso para cambiar los dispositivos de salida de audio:

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.sound"
end tell


tell application "System Events"
    tell application process "System Preferences"
        tell tab group 1 of window "Sound"
            click radio button "Output"
            if (selected of row 2 of table 1 of scroll area 1) then
                set selected of row 1 of table 1 of scroll area 1 to true
                set deviceselected to "Headphones"
            else
                set selected of row 2 of table 1 of scroll area 1 to true
                set deviceselected to "MX279"
            end if
        end tell
    end tell
end tell
tell application "System Preferences" to quit

Funcionó en Yosemite, pero cuando actualicé a El Capitán me está dando el siguiente error:

"System Events got an error: Can't get tab group 1 of window \"Sound\" of application process \"System Preferences\". Invalid index"

No estoy muy familiarizado con applecript, por lo que cualquier idea de por qué esto podría estar sucediendo será muy apreciada.

    
pregunta gdavtor 06.10.2015 - 01:24

1 respuesta

8

En la primera parte de su script, carga el panel de preferencias Sound . Puede suceder que el panel no esté completamente cargado antes de enviarle comandos en la segunda parte de la secuencia de comandos. El error dice que el tab group 1 (el que contiene la pestaña Output ) no existe en el momento en que intenta acceder.

Para asegurarnos de que tab group 1 existe, podemos esperar con estas dos líneas:

repeat until exists tab group 1 of window "Sound"
end repeat

El script completo:

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.sound"
end tell


tell application "System Events"
    tell application process "System Preferences"
        repeat until exists tab group 1 of window "Sound"
        end repeat
        tell tab group 1 of window "Sound"
            click radio button "Output"
            if (selected of row 2 of table 1 of scroll area 1) then
                set selected of row 1 of table 1 of scroll area 1 to true
                set deviceselected to "Headphones"
            else
                set selected of row 2 of table 1 of scroll area 1 to true
                set deviceselected to "MX278"
            end if
        end tell
    end tell
end tell
tell application "System Preferences" to quit
    
respondido por el Arthur 06.10.2015 - 13:26

Lea otras preguntas en las etiquetas