Estoy programando iTunes y me encontré con dos problemas cuando, en un paso de mi secuencia de comandos, necesito verificar si se muestran ventanas/diálogos o no.
De acuerdo con ¿Esperando hasta que exista una ventana en Applescript? este debería ser un código válido
repeat until window "Print" of process "Evernote" exists
pero cuando lo compilo, aparece este mensaje de error "Se esperaba el final de la línea pero se encontró """ (" se refiere al " antes de la E en Evernote). ¿Por qué? Esa pregunta tiene 2,5 años, ¿ha cambiado algo desde entonces? Estoy ejecutando OS X 10.11.
Puedo usar este código para verificar si la ventana de información de la canción está abierta en iTunes
repeat until (not (exists window "Song Info"))
pero cuando trato de buscar en Abrir diálogo con una línea similar
repeat until (exists window "Open")
la ventana no se detecta. He usado el Inspector de accesibilidad para obtener algunas propiedades de la ventana Información de la canción y el cuadro de diálogo Abrir y las únicas diferencias que he notado son el nombre y el tipo. Información de la canción es una "ventana", mientras que Abrir es un "diálogo". Por lo tanto, también probé estas dos variaciones en el código anterior:
repeat until (exists dialog "Open")
repeat until (exists window dialog "Open")
repeat until (exists dialog window "Open")
pero ninguno de ellos compila.
¿Cómo detecto el cuadro de diálogo Abrir?
La razón por la que está obteniendo " Error de sintaxis esperado al final de la línea pero encontró """." cuando lo usa repeat until window "Print" of process "Evernote" exists
es porque lo está usando fuera del contexto de la aplicación que llama. Puede decir significado, dentro del contexto de la aplicación que llama, no entiende el comando y el Editor de AppleScript no está tan bien escrito para expresar lo que realmente significa el error.
De todos modos, el código de ejemplo a continuación, cuando se ejecuta en ScriptEditor, por sí mismo, esperará para mostrar "¡Tu espera ha terminado!" cuadro de diálogo hasta que se abra iTunes y presione ⌘Oo haga clic en Archivo > Agregar a la biblioteca... en el menú de iTunes .
tell current application
tell application "System Events"
repeat until (exists window "Add To Library" of application process "iTunes")
delay 1
end repeat
end tell
activate
display dialog "Your wait is over!"
end tell
delay
comando dentro del repeat
bucle . Obviamente, el valor se puede establecer en otra cosa, incluso fracciones de segundo , sin embargo, siempre debe usar un retraso para evitar que los eventos del sistema activen innecesariamente el bucle cientos de veces por segundo hasta que se cumpla la condición .Como regla general, descubrí que cada vez que estoy usando un código que tiene ... process ...
o ... application process ...
es una llamada realizada por Eventos del sistema y , como tal, en este caso de uso, el ciclo debe estar dentro de una declaración o bloque de Eventos del sistema en para no obtener el error mencionado en su OP. repeat
tell
repeat until (exists window "Add To Library" of application process "iTunes")
a repeat until (not (exists window "Add To Library" of application process "iTunes"))
funciona para mí. Dicho esto, cada vez que busque ayuda para depurar el código , siga Cómo crear un ejemplo mínimo, completo y verificable para permitirnos reproducir el problema tal como lo encontró. De lo contrario, tenemos que adivinar el contexto del problema y eso no es propicio para dar respuestas de calidad.repeat
ciclo también repeat until (not (exists window "Song Info" of application process "iTunes"))
funciona para mí.repeat while not (exists window "Song Info" of application process "iTunes")
base de datos
usuario3439894