1 votos

Seleccionar un menú desplegable en Safari

Necesito crear un Applescript para abrir un determinado sitio web y exportarlo como PDF utilizando el menú "Guardar como PDF " en el menú Archivo. Luego, necesito guardar ese PDF en una ubicación determinada de mi disco duro. Estoy encontrando problemas al intentar activar el menú desplegable en primer lugar.

Estoy probando este código pero me da error:

tell application "Safari" to open location "http://www.webiste.com/"
delay 1
    click menu item "Save as PDF..." of menu bar item "File"        
    end tell
end tell

Estoy añadiendo un retraso 1 para asegurarme de que todos los elementos se cargan antes de disparar el menú "Guardar como PDF...". Todavía no he llegado al punto de determinar la ubicación específica donde quiero que se guarde ese PDF. Usaré Automator para crear un evento recurrente basado en esta Apple script. ¿Alguna idea?

2voto

user3439894 Puntos 5883

Probado bajo MacOS High Sierra Aquí está cómo lo hago yo:

set saveToLocation to "~/Documents"
set myURL to "http://www.webiste.com/"

tell application "Safari"
    make new document with properties {URL:myURL}
    activate
end tell

tell application "System Events"
    repeat until exists (buttons of ¬
        UI elements of ¬
        groups of ¬
        toolbar 1 of ¬
        window 1 of ¬
        process "Safari" whose ¬
        name = "Reload this page")
        delay 0.5
    end repeat
    tell application process "Safari"
        click menu item "Export as PDF…" of ¬
            menu "File" of ¬
            menu bar item "File" of ¬
            menu bar 1
        repeat until exists sheet 1 of window 1
            delay 0.05
        end repeat
        keystroke "g" using {shift down, command down}
        repeat until exists sheet 1 of sheet 1 of window 1
            delay 0.05
        end repeat
        set value of ¬
            combo box 1 of ¬
            sheet 1 of ¬
            sheet 1 of ¬
            window 1 to ¬
            saveToLocation
        click button "Go" of sheet 1 of sheet 1 of window 1
        click button "Save" of sheet 1 of window 1
    end tell
end tell

Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.

1voto

red_menace Puntos 111

AppleScript no conoce los elementos del menú, por lo que tendrá que utilizar una aplicación que lo haga, como Eventos del sistema . Los menús pueden ser confusos, ya que los elementos del menú también pueden tener menús (echa un vistazo al diccionario de scripts), pero tu comando sería algo así:

tell application "Safari"
   open location "http://www.website.com/" -- this command is from Standard Additions
   activate -- bring Safari to the front if it isn't already
end tell
delay 2
tell application "System Events" to click menu item "Export as PDF…" of menu "File" of menu bar item "File" of menu bar 1 of application process "Safari"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X