Applescript: "impossibile ottenere il gruppo di schede 1 di finestra" (El Capitan)

5

Quello che segue è un applescript che uso per cambiare i dispositivi di uscita 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

Ha funzionato su Yosemite, ma quando mi sono aggiornato a El Capitan mi sta dando il seguente errore:

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

Non ho molta familiarità con il applescript, quindi qualsiasi idea sul perché questo potrebbe accadere sarà molto apprezzata.

    
posta gdavtor 06.10.2015 - 01:24
fonte

1 risposta

8

Nella prima parte del tuo script carichi il riquadro delle preferenze Sound . Può accadere che il riquadro non sia completamente caricato prima di inviare comandi nella seconda parte dello script. L'errore indica che il tab group 1 (quello che contiene la scheda Output ) non esiste nel momento in cui stai tentando di accedervi.

Per assicurarti che tab group 1 esista, possiamo aspettarlo con queste due righe:

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

Lo 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
    
risposta data 06.10.2015 - 13:26
fonte

Leggi altre domande sui tag