Comment connaître le nom des éléments de l'interface utilisateur à l'aide de l'inspecteur d'accessibilité (ou de tout autre outil)

21

J'essaie d'interagir avec une boîte de dialogue d'impression via Applescript.

Ce que je veux émuler, c'est que l'utilisateur définit une valeur dans une liste déroulante spécifique.

Dis que j'ai:

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

Comment connaître le nom XXX? Par exemple, comment distinguer les listes déroulantes "imprimante" et "préréglages"?

J'ai ouvert l'inspecteur d'accessibilité, mais à partir des informations qui y sont affichées, je ne peux pas repérer une référence au nom ou à un autre identifiant unique pour la liste déroulante spécifiée.

J'ai vu beaucoup de gens utiliser des chiffres pour faire référence aux différentes listes déroulantes, mais je ne suis pas sûr que ce soit une bonne pratique. Que se passe-t-il si Apple décide d'échanger l'ordre de deux listes déroulantes à un moment donné?

Toute aide serait appréciée.

Mise à jour :

En utilisant 10.6.8 et inspecteur comme suggéré ci-dessous, j'obtiens ce qui suit:

entrez la description de l'image ici

Roberto Aloi
la source
J'ai également trouvé la UI elementscommande d'ici utile: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
phs
Voici un lien vers une autre page dans Ask Different qui est liée à la page actuelle, appelée: AppleScript - Comment puis-je obtenir les noms des éléments d'interface utilisateur, les attributs, les propriétés, les classes par programme sans «deviner» via l'inspecteur d'accessibilité? (Cette question ici était la raison pour laquelle je voulais apprendre quelques faits de base sur le "How-to"…)
clemsam lang

Réponses:

15

MISE À JOUR. cela fonctionnera dans 10.7.x mais 10.6 a les informations sur les éléments.

Les boutons (listes déroulantes) de la feuille d'impression ont une description pour décrire la fonction.

Dans l' inspecteur d'accessibilité ; vous voyez cela lorsque vous passez la souris sur l'élément (bouton). vous pouvez verrouiller la vue de l' inspecteur d'accessibilité avec cmd + F7.

La description sera répertoriée comme AXDescription

entrez la description de l'image ici

Dans le cas des imprimantes, il s'agit d' imprimantes pour préréglages, il s'agit de préréglages

Si vous connaissez l' AXDescription, vous pouvez éviter les chiffres en utilisant quelque chose comme ça. Mais ce n'est pas le seul moyen. Un seul exemple.

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

Pour que ce qui précède fonctionne dans cet exemple, la feuille d'impression doit être visible avec «Afficher les détails»

Le bouton / menu déroulant a un menu. Vous pouvez donc le sélectionner ou cliquer dessus en vous référant aux éléments de menu du menu du bouton.

Soit par numéro, soit en utilisant son titre / 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

Vous pouvez raccourcir le code répétitif en utilisant une variable pour le bouton et en l'appelant. Lorsque vous le faites comme mon exemple ci-dessous;

   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
markhunte
la source
4

Pour ceux qui se demandent, il semble qu'un endroit où trouver l'inspecteur d'accessibilité dans 10.7 est:

/Applications/Xcode.app/Contents/Applications

Arnaud P
la source
1

J'ai récemment rédigé mon flux de travail pour les scripts d'interface utilisateur dans AppleScript .

En bref, le composant clé qui a rendu les choses beaucoup, beaucoup plus faciles pour moi a été d'apprendre que la UI Elementscommande dans AppleScript renvoie une liste des termes que l'éditeur AppleScript veut voir pour appeler les éléments d'interface utilisateur. Associez-le aux termes vus de l'inspecteur d'accessibilité (qui sont souvent légèrement différents) pour créer un script de travail.

n8henrie
la source