8
votes

AppleScript ou Automator pour cliquer sur des menus dans une application?

Je ne suis pas sûr que cela soit fait via AppleScript et / ou Automator ... mais j'aimerais pouvoir:

a) lancez une application (je sais que cela peut être effectué assez facilement par AppleScript ou Automator)

b) Une fois l'application lancée, utilisez AppleScript ou Automator pour sélectionner des éléments de menu spécifiques.

E.g. J'aimerais lancer Excel 2008 (j'ai la maison d'accueil / étudiante qui ne vient pas préconfiguré pour l'automatiseur), puis cliquez sur le menu "Fichier" et cliquez sur "Ouvrir".

Tous les pointeurs sur où aller / rechercher comment sélectionner des éléments de menu comme celui-ci (ou si c'est même possible du tout)?

Vous pouvez "trier de" faire cela à l'aide de la fonction d'enregistrement de l'automatisteur, mais l'enregistrement est très fragile.

Je préférerais pouvoir utiliser AppleScript pour saisir simplement un "tableau" contenant chaque élément de menu de l'application, puis cliquez sur programmatisme sur l'élément de menu 0e dans mon tableau ... etc. c.

est-ce possible?

TIA


0 commentaires

5 Réponses :


-1
votes

Je ne sais pas de saisir un tableau, mais cela semble pouvoir fonctionner pour envoyer les clics de la souris, etc:

VirtualInput


0 commentaires

1
votes

Le script de l'interface utilisateur est une bête fickle. C'est fragile et souvent sensible à de nombreuses choses au-delà de votre contrôle, tels que des dialogues inattendus (d'autres applications), des modifications de la police ou de la langue système, l'activité de l'utilisateur. Sans parler des modifications de l'interface utilisateur d'une application à travers les versions.

Il est beaucoup plus robuste d'utiliser parler directement à l'application via son API AppleScript. C'est exactement le but de AppleScript. Vous pouvez toujours voir les actions et les données une application peut fournir via Appscript via l'élément de menu "Open Dictionary ..." dans AppleScript Editor.app (Sélectionnez l'application que vous souhaitez script dans la boîte de dialogue Fichier). Au lieu de simuler un clic de souris sur un menu, vous appelez l'action que l'élément de menu déclenche directement via Appscript.

Bien sûr, toutes les applications n'ont pas une API complète (ou même toute) AppleScript. Excel, cependant, a un excellent support AppleScript, si c'est votre cible.

Si vous essayez vraiment de faire des tests d'interface utilisateur, je vous recommande de commencer par d'autres options:

  1. Testez le modèle (analogue à la scripte du modèle de l'application via Appscript). En fait, si vous incluez une API AppleScript dans votre application, vous pouvez également effectuer des tests automatisés de cette API.
  2. Utilisez Boîte à outils Google pour les ajouts de test de l'unité de Mac . Roulez le vôtre) Pour envoyer des événements de souris ou de clavier à votre application.
  3. Utilisez Instruments.app pour enregistrer une séquence d'interface utilisateur. L'enregistrement des instruments est solide (je n'ai pas utilisé la fonctionnalité d'enregistrement d'automatisteur) et vous obtenez également toutes les autres goodies d'instruments aussi.

1 commentaires

+1. Si le dictionnaire AppleScript a une commande «ouverte», vous utilisez beaucoup mieux que les scripts d'interface utilisateur. Les scripts de l'interface utilisateur fonctionnent mieux en théorie que tout.



1
votes

En effet, l'interface utilisateur est fragile et finky, mais vous pourriez jeter un coup d'œil à Apple's page de script de l'interface graphique AppleScript


0 commentaires

5
votes
tell application "iTunes"

activate

end tell


tell application "System Events"

tell process "iTunes"

click menu item "as list" of menu "view" of menu bar 1

end tell

end tell

0 commentaires

3
votes

J'ai souvent besoin de créer un script d'interface graphique pour accéder à un élément de menu dans des applications dont la bibliothèque AppleScript ne fournit pas d'accès direct aux objets ou aux fonctions. L'élément de menu représente. Pour faciliter la réutilisation du code, j'utilise des variables pour l'application, le menu et les noms d'éléments de menu. Ensuite, j'ai juste besoin de changer les variables en haut plutôt que de choisir les noms du corps du code.

                            tell menu item theItem
                                tell menu theSubItem
                                    click menu item theSubSubItem
                                end tell
                            end tell


1 commentaires

lourd. Pourtant, cela a fonctionné pour moi. donc +1