2 votes

Applications non scriptables utilisant AppleScript. Que peut voir Applescript ?

Pour l'instant, je peux contrôler les éléments de la barre de menu et les pressions sur les touches, ce qui est excellent, mais j'aimerais pouvoir connaître tout ce qu'ApleScript peut voir à l'intérieur de la fenêtre d'une application.

obtenir des propriétés renvoie de bonnes choses, mais y a-t-il quelque chose de plus puissant ?

tell application "System Events" to tell application process "Clearview"
  get properties of window 1
end tell

J'ai essayé ça :

delay 2
tell application "System Events"
  tell front window of (first application process whose frontmost is true)
    set uiElems to entire contents
  end tell
end tell

mais elle est interrompue pour Clearview et même pour Terminal.

3voto

red_menace Points 1014

AppleScript peut voir à peu près tout le UI elements via Événements du système Mais pour obtenir des éléments sous une forme gérable, au lieu de tout jeter dans une boîte, il faut vraiment parcourir la hiérarchie de l'élément ou des éléments souhaités. Par exemple, il peut y avoir plusieurs objets (tels que splitter group , scroll area etc.) dans une fenêtre d'application, mais ceux-ci peuvent contenir chacun d'autres éléments, qui peuvent contenir d'autres éléments.....

C'est l'une des raisons pour lesquelles les scripts GUI sont si problématiques. Vous devez connaître la hiérarchie spécifique de l'élément ou du contrôle, mais cela peut changer en fonction de la version de l'application et de la disposition particulière à un moment donné, il est donc utile de savoir comment il a été trouvé en premier lieu.

Pour explorer la hiérarchie de l'interface utilisateur, Xcode comprend un Accessibility Inspector mais elle peut également être effectuée manuellement dans l'application scriptÉditeur où les références des objets peuvent être visualisées dans la fenêtre Log. Pour un exemple, commençons par les éléments de l'interface utilisateur d'une fenêtre d'application, ici la fenêtre frontale en Terminal v2.11 (Big Sur) :

tell application "System Events" -- peek into the rabbit hole
    tell application process "Terminal" to tell window 1
        set elements to its UI elements -- get elements at the current location
        if elements is {} then -- no more
            return its value
        else
            return elements
        end if
    end tell
end tell

Ensuite, si des éléments apparaissent dans les résultats, choisissez-en un et ajoutez-le à l'instruction tell pour obtenir ses éléments d'interface utilisateur, et ainsi de suite, jusqu'à ce que vous arriviez au contrôle qui vous intéresse. Dans la continuité de l'exemple précédent (l'instruction ¬ est un symbole de continuation de ligne provenant de l'utilisation de option-return (ou option-l ) pour essayer de garder un formatage raisonnable) :

tell application "System Events" -- kick the rabbit out
    tell application process "Terminal" to tell window 1 ¬
        to tell splitter group 1 ¬
        to tell scroll area 1 ¬
        to tell text area 1
        set elements to its UI elements -- get elements at the current location
        if elements is {} then -- no more
            return its value
        else
            return elements
        end if
    end tell
end tell

La référence finale de l'objet pour ce qui précède serait quelque chose comme text area 1 of scroll area 1 of splitter group 1 of window 1 of application process "Terminal" qui peut être copié depuis la fenêtre d'événement de l'éditeur script pour être utilisé ou conservé.

2voto

Graham Miln Points 39606

Inspecteur de l'accessibilité

Apple publie un outil graphique appelé Accessibility Inspector. Il est conçu pour explorer et tester les valeurs d'accessibilité associées à une interface. Il s'agit des mêmes informations qu'AppleScript utilise pour le scriptage de l'interface utilisateur graphique (GUI) :

Accessibility Inspector facilite encore davantage l'identification des informations relatives aux éléments de l'interface utilisateur. Cette application est incluse dans Xcode. Pour l'utiliser, ouvrez Xcode et sélectionnez Xcode > Open Developer Tool > Accessibility Inspector.

Voir le site d'Apple Automatisation de l'interface utilisateur pour des exemples.

Accessibility Inspector on macOS

1voto

varEStableGnus Points 19
tell application "System Events" to return value of every attribute of UI elements of windows of application process (name of first process whose frontmost is true)

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