Sto cercando di scrivere uno script di mele che scorre tra canzoni, album, artisti, compositori, generi e ritorno a canzoni.
Non c'è nulla nel dizionario applescript riguardo a questo, quindi devo ricorrere a UIscripting / Accessibility. Questo è quello che ho finora:
tell application "System Events" to tell process "iTunes"
set frontmost to true -- necessary
delay 1 -- for last line to take effect, delete if you bind this to keyboard shortcut
tell window 1 -- tell window "iTunes" only works when in fullscreen
tell pop up button 2 to perform action "AXPress" -- equivalent of
--keystroke "j" using {command down}
tell UI element 1 of row 5 of table 1 of pop over 1 of pop up button 2 to perform action "AXPress"
-- pressing Genres button, assuming Vies is not in Genres already, of course
end tell
end tell
Puoi eseguirlo con Script Editor, o preferibilmente ai fini del resto di questa domanda, associarlo a una scorciatoia da tastiera e invocarlo mentre sei in iTunes. Quando lo esegui, vedi il menu a comparsa lampeggiare sullo schermo, giusto?
Ora, ecco la parte interessante: usa il cursore per fare clic sul pulsante pop-up, scorri verso il basso e posiziona il cursore su Artisti .
Il cursore stesso viene omesso dalla funzione Schermata OS X, ma puoi vedere che Artisti è attivo. Ora premi Esc per nascondere il menu e invoca lo script mentre il cursore è ancora in questa posizione.
Bam! Ora sei passato alla vista Artisti . Si scopre che il secondo perform action "AXPress"
viene eseguito sotto il cursore perché il menu a comparsa non è attivo dopo aver fatto clic sul pulsante di opzione vie.
Esiste un modo più semplice per verificare questo problema / errore. 1) Fare clic sull'opzione di visualizzazione. 2) Premere il tasto Giù un paio di volte. Ti aspetteresti che il focus si sposterà su Songs e poi su Album , giusto? No, stai semplicemente spostando gli elementi della libreria in background, mentre il menu è ancora visualizzato in primo piano.
Quindi, la mia domanda si riduce a, come posso spostare lo stato attivo del cursore su questo menu a comparsa?
AGGIORNAMENTO: Grazie @ jackjr300 per la risposta. Ecco come appare il mio script finito:
tell application "System Events"
tell process "iTunes"
set frontmost to true
delay 1
tell pop up button 2 of window 1
click
if value of attribute "AXDescription" is "Genres" then
tell (select row 1 of table 1 of pop over 1) to click UI element 1
end if
if value of attribute "AXDescription" is "Songs" then
tell (select row 2 of table 1 of pop over 1) to click UI element 1
end if
if value of attribute "AXDescription" is "Albums" then
tell (select row 3 of table 1 of pop over 1) to click UI element 1
end if
if value of attribute "AXDescription" is "Artists" then
tell (select row 4 of table 1 of pop over 1) to click UI element 1
end if
if value of attribute "AXDescription" is "Composers" then
tell (select row 5 of table 1 of pop over 1) to click UI element 1
end if
end tell
end tell
end tell