No puedo borrar la Historia en Safari usando AppleScript en OS X El Capitán

2

He estado usando el siguiente script para borrar el historial de Safari de la prueba de selenio en OS X Yosemite. He actualizado a OS X El Capitan y ahora el script no funciona.

Error devuelto: No se puede obtener el botón "Borrar historial"

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

1 respuesta

1

En OS X El Capitan, al hacer clic en Borrar historial ... en el menú Historial, hace que el historial claro aparezca como un cuadro de diálogo modal o como una hoja enfocada en una ventana, como se ilustra en las imágenes al final de este responda, y el código de AppleScript a continuación lo maneja en cualquier caso.

El código se escribe con el supuesto de que aparece como un cuadro de diálogo y, si no se procesa como un cuadro de diálogo, entonces el controlador on error lo procesa como una hoja.

Este código , directamente debajo, esencialmente replica lo que hizo su código en OS X Yosemite, aunque ajustado para uso en OS X El Capitán, sin el comando delay que puedes agregar si quieres.

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

Para interactuar con la lista en el botón emergente Borrar, para ver cuánto se borra el Historial, el siguiente ejemplo de código lo aborda.

Debido a que puede aparecer de dos maneras diferentes, desafortunadamente requiere dos conjuntos separados de código similares y las dos secciones de código que rodean la lista "Borrar ..." deben ser se mantiene manualmente y se sincroniza si / cuando se usa ese segmento código .

Nota: Hay 10 líneas de código comentadas, precedidas por -- , pertenecientes a la lista "Borrar ...", 5 líneas en cada agrupación de código . Puede cambiar el valor actual para una de las 4 opciones sin comentar las líneas 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" de código , la de cada sección, y luego solo 1 de Los otros 4 a la vez, el similar en cada sección. Esto significa que solo se eliminarán las 4 líneas en total, 2 en cada sección, 1 para hacer clic en el botón emergente y la otra para la cantidad del historial que desea borrar. Los comentarios que he agregado, precedidos por -- # , dentro del código deben explicarse por sí mismos.

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

Esto como código se ejecuta muy rápido, sin embargo, puede insertar algunos comandos delay , donde sea apropiado, si desea ver mejor lo que está sucediendo a medida que se borra el Historial.

En las imágenes a continuación, una con la flecha roja apunta a lo que las 10 líneas de código comentadas, precedidas por -- , relacionadas con la lista "Borrar ..." se trata de . Para cambiar, por ejemplo, "la última hora" a uno de los otros valores , aquí es donde se descomentan las líneas comentadas apropiadas del código .

Como una hoja:

Comocuadrodediálogo:

    
respondido por el user3439894 11.09.2016 - 09:25

Lea otras preguntas en las etiquetas