2014-07-07 3 views
2

J'ai besoin d'effectuer une extension d'installation automatique dans Safari.Comment installer l'extension dans Safari par AppleScript

Maintenant, j'ai cette partie du code:

property extension_list : {"safariextz"} 
    on adding folder items to this_folder after receiving these_items 
    try 
    tell application "Finder" 
     repeat with i from 1 to (number of items in these_items) 
     set this_item to item i of these_items 
     set item_extension to name extension of this_item 
     if item_extension = "safariextz" then 
     tell application "Safari" to open this_item 
     delete this_item 
     end if 
     end repeat 
    end tell 
on error errmsg 
    display dialog errmsg buttons {"OK"} default button 1 
    end try 
end adding folder items to 

Cela fonctionne, en cours d'exécution est le fichier après le téléchargement. Mais je ne peux pas appuyer sur le bouton Installer pour démarrer l'extension d'installation.

J'ai essayé quelque chose comme ça

tell application "System Events" 
    tell process "Safari" 
    click the button "Install" 
    end tell 
end tell 

Mais cela ne suffit pas. Cloud vous m'aider s'il vous plaît avec compléter le script pour l'installation de l'extension?

Répondre

2

Vous devez spécifier une fenêtre comme ceci: click button 1 of window 1

ouvrir un fichier « safariextz » dans les blocs Safari le script, vous devez utiliser ignoring application responses

Le script doit vérifier que la boîte de dialogue est affichée

on adding folder items to this_folder after receiving these_items 
    repeat with this_item in these_items 
     if (this_item as string) ends with ".safariextz" then 
      ignoring application responses 
       tell application "Safari" to open this_item 
      end ignoring 
      tell application "System Events" 
       tell process "Safari" 
        set frontmost to true 
        repeat until (exists window 1) and subrole of window 1 is "AXDialog" -- wait until the dialog is displayed. 
         delay 1 
        end repeat 
        click button 1 of front window -- install 
       end tell 
      end tell 
     end if 
    end repeat 
end adding folder items to 

Mise à jour: comme ignoring application responses ne fonctionne pas pour vous, essayez cette

on adding folder items to this_folder after receiving these_items 
     repeat with this_item in these_items 
      if (this_item as string) ends with ".safariextz" then 
        tell application "Finder" to open this_item 
+0

Merci pour votre aide! J'ai vérifié le bouton dans Accessibility Inspector, il a le numéro 3. Donc j'ai mis à jour cette ligne: cliquez sur le bouton 3 de la fenêtre avant - installer Mais malheureusement, cela n'aide pas, je n'ai pas encore appuyé sur bouton par script. J'ai attendu environ 1 minute et après ce message "Safari a une erreur: AppleEvent a expiré" apparaît. Cela peut-il être lié à l'ignorance du processus? Peut être quelque chose de mal dans mon script avec ignorer et il ne va pas après le code: dire à l'application "Safari" pour ouvrir this_item – Ellina

+0

Le "script de l'interface graphique" varie en fonction de la version de l'OS et Safari. Mon script fonctionne sur Safari 7.0.5 et OS X 10.9.4 – jackjr300

+0

Ici, j'ai seulement deux boutons dans cette fenêtre. essayez ceci: ajoutez 'set frontmost à true' après' tell process "Safari" ' – jackjr300

1

Pour Safari 9, le contexte du bouton a changé. Voici le script que j'ai trouvé pour le faire fonctionner. (Ceci est seulement pour montrer l'ordre des commandes et comment cliquez sur le bouton.)

tell application "Safari" to activate 
delay 2 
tell application "System Events" 
    tell application process "Safari" 
     set frontmost to true 
     tell application "Safari" to open location "/path/to/SafariDriver.safariextz" 
     delay 2 
     click button 1 of sheet 1 of window 1 
    end tell 
end tell 
tell application "Safari" to quit 
Questions connexes