26 votes

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

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

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

Dis que je l'ai fait :

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 pourrais-je distinguer les menus déroulants "imprimante" et "préréglages" ?

J'ai ouvert l'inspecteur d'accessibilité, mais d'après les informations affichées, je ne trouve pas de référence au nom ou à un autre identifiant unique pour la liste déroulante spécifiée.

J'ai vu de nombreuses personnes utiliser des chiffres pour se référer 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'intervertir l'ordre de deux listes déroulantes à un moment donné ?

Toute aide serait appréciée.

UPDATE :

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

enter image description here

0 votes

J'ai trouvé le UI elements commande d'ici utile aussi : n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript

0 votes

Voici un lien vers une autre page sur Demande différente qui est liée à la page actuelle, appelée : AppleScript - Comment puis-je obtenir les noms, attributs, propriétés et classes des éléments de l'interface utilisateur de manière programmatique sans avoir à "deviner" via l'inspecteur d'accessibilité ? (Cette question est la raison pour laquelle j'ai voulu apprendre quelques faits de base sur le "comment faire" )

20voto

markhunte Points 11634

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

Les boutons (menus déroulants) de la feuille d'impression ont une description de leur fonction.

Sur Inspecteur de l'accessibilité ; vous voyez ceci lorsque vous passez la souris sur l'élément (bouton). vous pouvez verrouiller l'option Inspecteur de l'accessibilité avec cmd+F7.

La description sera répertoriée comme suit AXDescription

enter image description here

Dans le cas des imprimantes, c'est Imprimantes pour les Presets, c'est Préréglages

Si vous connaissez le AXDescription vous pouvez éviter les chiffres en utilisant quelque chose comme ceci. Mais ce n'est pas le seul moyen. Juste un 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 l'opération ci-dessus fonctionne dans cet exemple, la feuille d'impression doit être visible avec l'option "Afficher les détails".

Le bouton/le menu déroulant comporte un menu. Vous pouvez donc le sélectionner ou le cliquer en vous référant à l'onglet éléments du menu de la 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. En le faisant 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

5voto

leora Points 5626

Utilisez l'un des scripts liés dans cette astuce Mac OS X pour trouver la forme d'adresse appropriée : Recherche d'éléments de contrôle et de menu à utiliser dans les scripts d'interface utilisateur AppleScript

IIRC, vous devez cliquer (cmd est dans dans System Events) sur le bouton du menu contextuel avant de pouvoir sélectionner un élément de son menu.

4voto

Arnaud P Points 143

Pour ceux qui se posent la question, il semble qu'un emplacement où trouver l'inspecteur d'accessibilité dans 10.7 soit :

/Applications/Xcode.app/Contenus/Applications

1voto

Silverfish Points 494

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

En bref, l'élément clé qui a rendu les choses beaucoup, beaucoup plus faciles pour moi a été d'apprendre que la UI Elements dans AppleScript renvoie une liste de les termes qu'AppleScript Editor veut voir pour appeler les éléments de l'interface utilisateur. Interfacer cela avec les termes vus par l'inspecteur d'accessibilité (qui sont souvent légèrement différents) pour construire un script fonctionnel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X