2 votes

Impossible d'effacer l'historique dans Safari à l'aide d'AppleScript dans OS X El Capitan

J'ai utilisé le script ci-dessous pour effacer l'historique Safari du test selenium dans OS X Yosemite . J'ai mis à niveau vers OS X El Capitan et maintenant le script ne fonctionne pas.

Retour d'erreur : Impossible d'obtenir le bouton "Effacer l'historique".

tell application "Safari" to activate
tell application "System Events"
    tell process "Safari"
        tell menu bar 1
            tell menu bar item "History"
                tell menu 1
                    click menu item "Clear History…"
                end tell
            end tell
        end tell
        delay 1 -- optional
        click button "Clear History"
    end tell
end tell

2voto

user3439894 Points 52496

Dans OS X El Capitan, lorsque vous cliquez sur Effacer l'historique dans le menu Historique, celui-ci s'affiche soit sous la forme d'une boîte de dialogue modale, soit sous la forme d'une feuille focalisée sur une fenêtre, comme l'illustrent les images au bas de cette réponse, ainsi que l'AppleScript code ci-dessous le gère dans les deux cas de figure.

El code est écrit en supposant qu'il apparaît comme une boîte de dialogue. S'il ne parvient pas à se traiter comme une boîte de dialogue, alors l'option on error manipulateur le traite comme une feuille.

Ce site code directement en dessous, reproduit essentiellement ce que votre code comme dans OS X Yosemite, bien qu'ajusté pour être utilisé dans OS X El Capitan, sans l'option delay que vous pouvez ajouter si vous le souhaitez.


tell application "Safari" to activate
tell application "System Events"    
    click menu item "Clear History…" of menu 1 of menu bar item "History" of menu bar 1 of process "Safari"    
    try        
        click button "Clear History" of front window of process "Safari"        
    on error
        try
            click button "Clear History" of sheet 1 of window 1 of process "Safari"            
        end try
    end try
end tell

Pour interagir avec le liste sur le bouton pop up Effacer, pour savoir quelle partie de l'historique doit être effacée, les éléments suivants sont disponibles code exemple l'aborder.

Parce qu'il peut apparaître de deux façons différentes, il nécessite malheureusement deux ensembles distincts de similaires. code et les deux sections de code entourant la liste "Effacer ..." doit être maintenue manuellement et synchronisée si/quand on utilise cette liste. code segment.

Note : Il y a 10 lignes de code commenté, précédé de -- en ce qui concerne la liste "Clear ...", 5 lignes dans chaque groupement de code . Vous pouvez changer le valeur pour l'un des 4 choix possibles en décommentant l'option click pop up button 1 of window 1 of process "Safari" y click pop up button 1 of sheet 1 of window 1 of process "Safari" lignes de code puis 1 seul des 4 autres à la fois, le même dans chaque section. Cela signifie que seulement 4 lignes au total doivent être décommentées, 2 dans chaque section, 1 pour cliquer sur le bouton popup et l'autre pour la partie de l'historique que vous voulez effacer. Les commentaires que j'ai ajoutés, précédés de -- # dans le cadre de la code devrait être explicite.

tell application "Safari"
    activate
end tell

tell application "System Events"

    click menu item "Clear History…" of menu 1 of menu bar item "History" of menu bar 1 of process "Safari"

    try
        -- # 
        -- # NOTE: Keep this block of commented out code in sync with the similar block below!
        -- # 
        -- # If you want to change the value of the "Clear ..." list, then uncomment the line of code directly below this comment.
        -- # 
        -- click pop up button 1 of window 1 of process "Safari"
        -- #     
        -- # If you've uncommented the line of code directly above this comment, then uncomment only 1 of the 4 lines of code below.
        -- # 
        -- click menu item "the last hour" of menu 1 of pop up button 1 of window 1 of process "Safari"
        -- click menu item "today" of menu 1 of pop up button 1 of window 1 of process "Safari"
        -- click menu item "today and yesterday" of menu 1 of pop up button 1 of window 1 of process "Safari"
        -- click menu item "all history" of menu 1 of pop up button 1 of window 1 of process "Safari"
        -- # 

        click button "Clear History" of front window of process "Safari"

    on error
        try
            -- # 
            -- # NOTE: Keep this block of commented out code in sync with the similar block above!
            -- #     
            -- # If you want to change the value of the "Clear ..." list, then uncomment the line of code directly below this comment.
            -- # 
            -- click pop up button 1 of sheet 1 of window 1 of process "Safari"
            -- #     
            -- # If you've uncommented the line of code directly above this comment, then uncomment only 1 of the 4 lines of code below.
            -- # 
            -- click menu item "the last hour" of menu 1 of pop up button 1 of sheet 1 of window 1 of process "Safari"
            -- click menu item "today" of menu 1 of pop up button 1 of sheet 1 of window 1 of process "Safari"
            -- click menu item "today and yesterday" of menu 1 of pop up button 1 of sheet 1 of window 1 of process "Safari"
            -- click menu item "all history" of menu 1 of pop up button 1 of sheet 1 of window 1 of process "Safari"
            -- # 

            click button "Clear History" of sheet 1 of window 1 of process "Safari"

        end try
    end try
end tell

Tel qu'il est codé, ce système fonctionne très rapidement, mais vous pouvez insérer quelques delay commandes le cas échéant, si vous voulez mieux voir ce qui se passe pendant l'effacement de l'historique.


Dans les images ci-dessous, celle avec la flèche rouge pointe vers ce que les 10 lignes de code commenté, précédé de -- Il s'agit de la liste "Clear ...". Pour remplacer, par exemple, "la dernière heure" par l'un des autres éléments de la liste "Effacer ...", il suffit de cliquer sur le bouton "Effacer ...". valeurs c'est ici que vous décomposez les lignes commentées appropriées de l'application code .

Comme une feuille : enter image description here

Comme une boîte de dialogue :

enter image description here

0voto

provoker Points 1

Génial, génial et encore plus génial

Votre réponse semble éclaircir la plupart des choses et j'apprécie beaucoup vos efforts.

Merci pour votre temps et vos efforts, Monsieur.

Maintenant, je regrette de ne pas avoir cherché une réponse beaucoup plus tôt.


Donc, ce que j'ai fini avec jusqu'à présent et qui semble fonctionner est le suivant.

Le script de "Safari On" ressemble à ceci pour le moment mais fonctionne ainsi :

  • Il active Safari...

  • ferme toutes les fenêtres ouvertes..

  • sélectionne l'option "Effacer l'historique"...

  • sélectionne l'option "Effacer tout l'historique"...

  • efface effectivement tout l'historique et la plupart des données

  • puis il se répète pour effacer l'historique/les données deux fois au total.

  • et vous laisse avec une fenêtre propre et fraîche pour naviguer.

\==== "Safari On" :

tell application "System Events"
tell application "Safari"
    activate
    close every window
end tell
tell application "System Events"
    click menu item "Clear History…" of menu 1 of menu bar item "History" of menu bar 1 of process "Safari"
    try
        click pop up button 1 of window 1 of process "Safari"
        click menu item "all history" of menu 1 of pop up button 1 of window 1 of process "Safari"
        click button "Clear History" of front window of process "Safari"
        end try
end tell
tell application "Safari"
    make new document
end tell
end tell

Et le script "Safari Off" est fondamentalement le même sauf qu'il ferme toutes les fenêtres et quitte le programme :

\======

"Safari Off" :

tell application "Safari"
activate
close every window
end tell
tell application "System Events"
click menu item "Clear History…" of menu 1 of menu bar item "History" of menu bar 1 of process "Safari"
try
    click pop up button 1 of window 1 of process "Safari"
    click menu item "all history" of menu 1 of pop up button 1 of window 1 of process "Safari"
    click button "Clear History" of front window of process "Safari"
end try
end tell
tell application "Safari"
quit
end tell

\====

OK maintenant que les scripts effacent réellement l'historique et les données

Je les ai sauvegardés dans le dossier Application comme une application ...

Ensuite, j'ai mis en place un Service séparé pour chacun des deux scripts qui lance simplement ce scripts avec une touche de commande.

J'ai utilisé Automator pour créer les Services puis les Services système/clavier/shortcuts... pour attribuer une touche de commande pour chaque script.

ce qui s'avère être très rapide et pratique pour effacer l'historique et les données de Safari.

Qui sait ? peut-être est-il possible de faire en sorte que ces scripts s'exécutent automatiquement à l'ouverture ou à la fermeture de Safari ???

Si quelqu'un peut améliorer ce point, n'hésitez pas. J'aimerais voir un script plus efficace, plus propre et plus rapide réalisé par quelqu'un qui sait ce qu'il fait.

Aussi... tout autre scripts utiles pour rationaliser les processus de l'application. J'en ai fait un pour l'application "Clean My Mac" qui ouvre Clean my Mac, lance un scan... puis lance le processus de nettoyage et quitte l'application... le tout à partir d'une touche de commande.

merci encore pour votre temps et vos efforts pour résoudre ce problème... vous êtes génial.

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