Der Verlauf in Safari kann mit AppleScript in OS X El Capitan nicht gelöscht werden

Ich habe das folgende Skript verwendet, um den Safari-Verlauf vom Selentest in OS X Yosemite zu löschen. Ich habe auf OS X El Capitan aktualisiert und jetzt funktioniert das Skript nicht.

Fehler zurückgegeben: Die Schaltfläche "Verlauf löschen" kann nicht abgerufen werden

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
Funktioniert meine aktualisierte Antwort für Sie?

Antworten (2)

Wenn Sie in OS X El Capitan im Verlaufsmenü auf Verlauf löschen… klicken, wird Verlauf löschen entweder als modales Dialogfeld oder als fokussiertes Blatt in einem Fenster angezeigt, wie in den Bildern am Ende dieser Antwort dargestellt, und Der folgende AppleScript- Code behandelt es in beiden Fällen.

Der Code wird unter der Annahme geschrieben, dass er als Dialogfeld angezeigt wird, und wenn er nicht als Dialogfeld verarbeitet werden kann, verarbeitet der on error Handler ihn als Blatt.

Dieser Code direkt darunter repliziert im Wesentlichen, was Ihr Code in OS X Yosemite getan hat, obwohl er für die Verwendung in OS X El Capitan angepasst wurde, ohne den delayBefehl, den Sie hinzufügen können, wenn Sie möchten.


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

Um mit der Liste auf der Popup-Schaltfläche „Löschen“ zu interagieren und festzulegen, wie viel des Verlaufs gelöscht werden soll, befasst sich das folgende Codebeispiel damit.

Da es auf zwei verschiedene Arten erscheinen kann, sind leider zwei separate Sätze ähnlichen Codes erforderlich , und beide Codeabschnitte, die die Liste "Clear ..." umgeben, müssen manuell gepflegt und synchronisiert werden, wenn/wenn dieses Codesegment verwendet wird .

Hinweis: Es gibt 10 auskommentierte Codezeilen-- mit vorangestelltem , die sich auf die Liste "Clear ..." beziehen, 5 Zeilen in jeder Codegruppierung . Sie können den aktuellen Wert für eine von 4 Optionen ändern, indem Sie die Codezeilen und auskommentieren , click pop up button 1 of window 1 of process "Safari"die eine in jedem Abschnitt, und dann nur eine der anderen 4 gleichzeitig, die ähnliche in jedem Abschnitt. Dies bedeutet, dass insgesamt nur 4 Zeilen auskommentiert werden müssen, 2 in jedem Abschnitt, 1, um auf die Popup-Schaltfläche zu klicken, und die andere, wie viel des Verlaufs gelöscht werden soll. Die von mir hinzugefügten Kommentare mit vorangestelltem im Code sollten selbsterklärend sein.click pop up button 1 of sheet 1 of window 1 of process "Safari"-- #

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

Dies läuft wie codiert sehr schnell, Sie können jedoch gegebenenfalls einige delay Befehle einfügen , wenn Sie besser sehen möchten, was passiert, während der Verlauf gelöscht wird.


In den Bildern unten zeigt eine mit dem roten Pfeil auf den Inhalt der 10 auskommentierten Codezeilen mit vorangestelltem ,-- die sich auf die Liste "Clear ..." beziehen. Um zB "die letzte Stunde" in einen der anderen Werte zu ändern , kommentieren Sie hier die entsprechenden kommentierten Codezeilen aus .

Als Blatt: Geben Sie hier die Bildbeschreibung ein

Als Dialogbox:

Geben Sie hier die Bildbeschreibung ein

@ user3290656, ich gehe davon aus, dass Sie den auskommentierten Code und seine Verwendung verstanden haben, falls erforderlich/gewünscht. Wenn nicht, einfach fragen.
Ich habe den Code verstanden. Sicher. Mein Szenario war, den gesamten Verlauf zu löschen. Es war direkt. Dein Code funktioniert einwandfrei. Außerdem stehe ich vor einem weiteren Problem. Irgendwann bekommen wir das Geschichtsblatt als Pop-up. Wie gehe ich mit diesem Szenario um?
@ user3290656, ich habe meine Antwort auf Ihre Frage aktualisiert, tatsächlich umgeschrieben. Es handhabt jetzt das Löschen des Verlaufs, das entweder als modales Dialogfeld oder als fokussiertes Blatt angezeigt wird.
Hallo: Danke für dieses Skript. Allerdings erhalte ich eine Fehlermeldung, dass „Menüleisteneintrag „Verlauf“ der Menüleiste 1 des Prozesses „Safari““ nicht gelesen werden kann (-1728). Was ist die Quelle dafür? Thx fürs Helfen!

Wahnsinn, Wahnsinn und noch mehr Wahnsinn..

Ihre Antwort scheint die meisten Dinge geklärt zu haben, und ich weiß Ihre Bemühungen sehr zu schätzen.

Vielen Dank für Ihre Zeit und Bemühungen, guter Herr.

Jetzt wünschte ich mir, ich hätte viel früher nach einer Antwort gesucht.


Was ich bisher beendet habe und das zu funktionieren scheint, ist Folgendes.

Das "Safari On"-Skript sieht im Moment so aus, funktioniert aber so:

  • Es aktiviert Safari...

  • schließt alle geöffneten Fenster..

  • wähle die Option "Verlauf löschen"...

  • Wählt die Option "ALLEN Verlauf löschen"...

  • löscht tatsächlich den gesamten Verlauf und ... (die meisten) Daten ...

  • dann wiederholt es sich, um den Verlauf/die Daten insgesamt zweimal zu löschen

  • hinterlässt Ihnen dann ein sauberes, frisches Fenster zum Durchsuchen.

==== "Safari an":

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

Und das Skript "Safari Off" ist im Grunde dasselbe, außer dass es alle Fenster schließt und das Programm beendet:

======

„Safari aus“:

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 .. jetzt, wo die Skripte tatsächlich den Verlauf und die Daten löschen ..

Ich habe sie im Anwendungsordner gespeichert als ... eine Anwendung ...

Dann richte ich für jedes der beiden Skripte einen separaten Dienst ein, der dieses Skript einfach mit einer Befehlstaste startet.

Ich habe Automator verwendet, um die Dienste zu erstellen, und dann die Systemdienste / Tastatur / Verknüpfungen ..., um jedem Skript eine Befehlstaste zuzuweisen.

Dies erweist sich als sehr schnell und praktisch beim Löschen des Safari-Verlaufs und der Daten.

Wer weiß? Vielleicht ist es möglich, dass diese Skripte beim Öffnen oder Schließen von Safari automatisch ausgeführt werden???

Wenn jemand das verbessern kann, dann gerne. Ich würde gerne ein effizienteres, saubereres und schnelleres Skript sehen, das von jemandem erstellt wurde, der weiß, was er tut.

Außerdem ... alle anderen nützlichen Skripte zum Optimieren von App-Prozessen. Ich habe eine für die App "Clean My Mac" erstellt, die Clean my Mac öffnet, einen Scan durchführt ... dann den Bereinigungsprozess ausführt und die App beendet ... alles über eine Befehlstaste.

Nochmals vielen Dank für Ihre Zeit und Bemühungen zur Lösung dieses Problems ... Ihr Wahnsinn.