Cómo saber el nombre de los elementos de la interfaz de usuario usando el inspector de accesibilidad (o cualquier otra herramienta)

Estoy tratando de interactuar con un cuadro de diálogo de impresión a través de Applescript.

Lo que quiero emular es que el usuario establezca un valor en un menú desplegable específico.

Di que tengo:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

¿Cómo debo saber el nombre XXX? Por ejemplo, ¿cómo distinguiría entre los menús desplegables "impresora" y "preajustes"?

Abrí el Inspector de accesibilidad, pero a partir de la información que se muestra allí, no puedo detectar una referencia al nombre o algún otro identificador único para el menú desplegable especificado.

He visto a muchas personas usar números para referirse a los diferentes menús desplegables, pero no estoy seguro de que sea una buena práctica. ¿Qué sucede si Apple decide cambiar el orden de dos menús desplegables en algún momento?

Cualquier ayuda sería apreciada.

ACTUALIZAR :

Usando 10.6.8 e inspector como se sugiere a continuación, obtengo lo siguiente:

ingrese la descripción de la imagen aquí

También encontré UI elementsútil el comando de aquí: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
Aquí hay un enlace a otra página en Ask Different que está vinculada a la página actual, llamada: AppleScript: ¿Cómo puedo obtener los nombres, atributos, propiedades y clases de los elementos de la interfaz de usuario mediante programación sin "adivinar" a través del Inspector de accesibilidad? (Esta pregunta aquí fue la razón por la que quería aprender algunos datos básicos sobre "Cómo hacerlo"...)

Respuestas (4)

ACTUALIZAR. esto funcionará en 10.7.x pero 10.6 tiene información de elementos menos.

Los botones (menú desplegable) en la hoja de impresión tienen una descripción para describir la función.

En inspector de accesibilidad ; ves esto cuando pasas el mouse sobre el elemento (botón). puede bloquear la vista del inspector de accesibilidad con cmd+F7.

La descripción aparecerá como AXDescription

ingrese la descripción de la imagen aquí

En los casos de las impresoras, son impresoras para ajustes preestablecidos, son ajustes preestablecidos

Si conoce la AXDescription , puede evitar los números usando algo como esto. Pero esta no es la única manera. Solo un ejemplo.

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

Para que lo anterior funcione en este ejemplo, la Hoja de impresión debe estar visible junto con 'Mostrar detalles'

El botón/desplegable tiene un menú. Para que pueda seleccionarlo o hacer clic en él, consulte los elementos de menú del menú del botón.

Ya sea por número o usando su título/AXTitle.

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

Puede acortar el código repetitivo usando una variable para el botón y llamando a eso. Al hacerlo como mi ejemplo a continuación;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell

Use una de las secuencias de comandos vinculadas en esta sugerencia de Mac OS X para encontrar la forma adecuada de dirección: Búsqueda de elementos de control y menú para usar en secuencias de comandos de la interfaz de usuario de AppleScript

IIRC, deberá hacer clic (cmd está en Eventos del sistema) en el botón del menú emergente antes de poder seleccionar un elemento de menú de su menú.

Para aquellos que se preguntan, parece que una ubicación donde encontrar el Inspector de Accesibilidad en 10.7 es:

/Aplicaciones/Xcode.app/Contents/Aplicaciones

Recientemente escribí mi flujo de trabajo para UI Scripting en AppleScript .

En resumen, el componente clave que hizo las cosas mucho, mucho más fáciles para mí fue aprender que el UI Elementscomando en AppleScript devuelve una lista de los términos que AppleScript Editor quiere ver para llamar a los elementos de la interfaz de usuario. Conecte esto con los términos vistos desde el Inspector de accesibilidad (que a menudo son ligeramente diferentes) para crear un script de trabajo.