Non è possibile cancellare la cronologia in Safari usando AppleScript in OS X El Capitan

2

Ho usato sotto lo script per cancellare la cronologia di Safari dal test del selenio in OS X Yosemite. Ho aggiornato a OS X El Capitan e ora lo script non funzionerà.

Errore restituito: impossibile ottenere il pulsante "Cancella cronologia"

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
    
posta user3290656 11.09.2016 - 08:10
fonte

1 risposta

1

In OS X El Capitan, quando fai clic su Cancella cronologia ... nel menu Cronologia, fa apparire Cancella cronologia come finestra di dialogo modale o come foglio attivo su una finestra, come illustrato nelle immagini nella parte inferiore di questo risposta, e il codice AppleScript sotto lo gestisce in entrambi i casi.

Il codice è scritto con l'ipotesi che appare come una finestra di dialogo e se non riesce a elaborare come una finestra di dialogo, quindi on error gestore lo elabora come un foglio.

Questo codice , direttamente sotto, essenzialmente replica ciò che il tuo codice ha fatto in OS X Yosemite, sebbene regolato per l'uso in OS X El Capitan, sans il comando delay che puoi aggiungere se vuoi.

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

Per interagire con la lista sul pulsante Cancella pop-up, per quanto tempo della cronologia cancellare, il seguente esempio di codice lo indirizzi.

Poiché può apparire in due modi diversi, sfortunatamente richiede due set separati di code simili e entrambe le sezioni di code che circondano la lista "Clear ..." devono essere mantenuto manualmente e sincronizzato se / quando si utilizza quel segmento codice .

Nota: ci sono 10 righe di code commentate, precedute da -- , relative all'elenco "Cancella ...", 5 righe in ogni raggruppamento di codice . Puoi cambiare il valore corrente per una delle 4 scelte decommentando le righe click pop up button 1 of window 1 of process "Safari" e click pop up button 1 of sheet 1 of window 1 of process "Safari" di codice , quella in ogni sezione, e poi solo 1 di l'altro 4 alla volta, il simile in ogni sezione. Ciò significa che solo 4 righe in totale devono essere decommentate, 2 in ciascuna sezione, 1 per fare clic sul pulsante popup e l'altra per quanto tempo della cronologia vuoi cancellare. I commenti che ho aggiunto, preceduti da -- # , all'interno del codice dovrebbero essere auto-esplicativi.

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

Questo codice viene eseguito molto velocemente, tuttavia puoi inserire alcuni delay comandi , se necessario, se vuoi vedere meglio cosa sta succedendo mentre la Cronologia viene cancellata.

Nelle immagini sottostanti, una con la freccia rossa indica le 10 righe di code commentate, precedute da -- , relative alla lista "Cancella ..." tratta . Per cambiare ad esempio "l'ultima ora" in uno degli altri valori , qui rimuovi le righe commentate appropriate del codice .

.

Come foglio:

Comefinestradidialogo:

    
risposta data 11.09.2016 - 09:25
fonte

Leggi altre domande sui tag