2010-08-13 7 views
0

J'essaie ce simple script GUI pour ouvrir une nouvelle fenêtre de Safari:question script GUI simple

tell application "Safari" 
    activate 
end tell 

tell application "System Events" 
    tell process "Safari" 
     try 
      tell menu bar 1 
       tell menu bar item 3 
        click menu item 1 
       end tell 
      end tell 
     on error theError 
      display dialog ("An error occurred while performing requested action" & theError) buttons "OK" default button "OK" 
     end try 
    end tell 
end tell 

mais il donne ce message d'erreur:

Fin prévue de la ligne mais a trouvé " ""

quelqu'un peut-il me suggérer où je peux me tromper?

Merci

Miraaj

Répondre

1

Wow, c'était bizarre. Votre script a cassé AppleScript Editor. Après avoir exécuté votre script et qu'il ne fonctionne pas ... J'ai essayé de recompiler le script et ensuite l'erreur que vous avez posté en commençant à apparaître. Donc en quelque sorte votre code a provoqué la rupture de l'éditeur AppleScript et donc l'erreur. J'ai dû quitter et relancer AppleScript Editor pour le faire fonctionner à nouveau. J'ai utilisé le navigateur de l'interface utilisateur de l'application et trouvé le problème. Votre référence à l'élément de menu était erronée. Il y a un menu supplémentaire que nous ne pouvons pas voir ... et vous n'avez pas référencé ce menu supplémentaire. C'est le problème avec les scripts gui. Et même si un script gui fonctionne, il peut se casser à une date ultérieure à mesure qu'une application est mise à jour. En tant que tel, évitez les scripts gui si cela est possible.

Quoi qu'il en soit, voici ce que votre code devrait ressembler ...

tell application "Safari" 
    activate 
end tell 

tell application "System Events" 
    tell process "Safari" 
     try 
      tell menu bar 1 
       tell menu bar item 3 
        click menu item 1 of menu 1 
       end tell 
      end tell 
     on error theError 
      display dialog ("An error occurred while performing requested action " & theError) buttons "OK" default button "OK" 
     end try 
    end tell 
end tell 

EDIT: Comme je l'ai mentionné dans mon commentaire ci-dessous, si vous ne trouvez pas une commande native du dictionnaire d'une application, la méthode suivante la plus fiable consiste à utiliser des raccourcis clavier. La plupart des éléments de menu les ont. Par exemple, si je voulais ouvrir un nouvel onglet dans une fenêtre, cet élément de menu a le raccourci clavier commande-t. Nous pouvons donc utiliser cela comme ça. Notez qu'il existe une commande native pour ouvrir un nouvel onglet sans utiliser de frappes, je montre juste cela comme un exemple.

tell application "Safari" to activate 
tell application "System Events" 
    keystroke "t" using command down 
end tell 
end 

commandes clavier ne changent généralement pas entre les mises à jour d'application alors que les commandes ne souvent parce que l'interface graphique programmeurs redessinent leur interface dans les mises à jour ... et quand cela arrive script IUG se détraque. L'un des trucs avec les scripts gui et les frappes de touches est que parfois le script va trop vite et ces techniques ne peuvent pas suivre la vitesse du programme, donc ils ont souvent des erreurs. Lorsque cela se produit, vous devez ralentir le script en utilisant de petits délais pour permettre à l'interface de suivre le script.

+0

que votre code fonctionne comme je le voulais :), mais je suis vraiment surpris par cette ligne: cliquez sur l'élément de menu 1 du menu 1, je ne l'aurais jamais imaginé! – Devarshi

+0

J'ai juste essayé de généraliser cette approche et de l'essayer pour l'ouverture: item du menu "show top sites" du menu "History". J'ai utilisé votre script et j'ai simplement remplacé la ligne: "Dites à l'élément de menu 3" de "Raconter l'élément de la barre de menu 6", mais il a commencé à obtenir l'erreur que j'ai rencontrée dans le script affiché ci-dessus. Comme un script GUI pour débutants a semblé être très facile pour moi mais comme j'essaye de plonger plus dedans, il a commencé à me rendre fou! Pouvez-vous suggérer un lien approprié pour cela, qui peut aider Begineer comme moi? – Devarshi

+0

Juste comme une note de bas de page rapide, quand je l'ai essayé ce matin, il a compilé et a couru avec succès, mais j'ai eu une erreur -1702, ce qui signifie que la commande donnée n'est pas scriptable. Ah, Applescript ... nous gardant toujours sur nos orteils. –