5 votos

Error de conexión no válida al ejecutar Applescript y Safari

El siguiente applescript espera a que se cargue una página antes de continuar con el do javascript "document.body.innerText" parte del script. Parece que funciona muy bien excepto por una cosa. Si Safari se está ejecutando pero no hay ninguna ventana abierta, la ejecución de este script da como resultado

error "Safari obtuvo un error: La conexión no es válida". número -609

Sin embargo, si ejecuto esto cuando Safari está cerrado, lanza Safari, va a la URL especificada y una vez que la página se carga, ejecuta la parte de javascript. No entiendo por qué se produce un error si Safari se ejecuta sin Windows abierto.

tell application "Safari"
    activate
    if not (exists document 1) then reopen
    tell front document
        set URL to "http://example.com"
        repeat until length of (source as text) is not 0
            delay 0.5
        end repeat
        do javascript "document.body.innerText"
    end tell
end tell

El error siempre resalta el source as text parte del script. He probado a cambiar length of (source as text) is not 0 a repeat until name is "example domain" pero el error sigue produciéndose si no hay ninguna ventana abierta y Safari está funcionando.

3voto

user3439894 Puntos 5883

Es necesario intercambiar la posición del activate línea de código con el if not (exists document 1) then reopen línea de código .

Ejemplo:

tell application "Safari"
    if not (exists document 1) then reopen
    activate
    tell front document
        set URL to "http://example.com"
        repeat until length of (source as text) is not 0
            delay 0.5
        end repeat
        do javascript "document.body.innerText"
    end tell
end tell

La captura de pantalla del Editor de script, a continuación, se ejecutó con Safari abierto y sin ningún Windows abierto.

Script Editor window

Primero tuve que marcar "[] Mostrar el menú Desarrollo en la barra de menús" (Safari > Preferencias > Avanzadas) y luego, en el menú Desarrollo, hacer clic en "Permitir JavaScript desde los eventos de Apple". A continuación copié y pegué tu AppleScript código en el editor de script y pulsamos el botón Ejecuta el script y se ejecutó sin error y devolvió el texto del http://example.com página web. Sin embargo Safari se cerró cuando ejecuté el script la primera vez.

Después de volver a leer tu pregunta, he podido reproducir el error teniendo Safari abierto sin ningún Windows abierto. Luego miré más detenidamente su código y se dio cuenta de que activate fue antes if not (exists document 1) then reopen y activate tiene que estar después de él para evitar el error.

0 votos

Teniendo activate en el lugar equivocado nunca se me pasó por la cabeza. Ahora funciona perfectamente. Gracias por resolver otra de mis preguntas relacionadas con Apple.

-1voto

spyle Puntos 121

El restablecimiento de mi archivo de preferencias lo ha solucionado. Para ello, mantén pulsadas las teclas Comando+Opción+Control+Mayúsculas mientras abres la aplicación Indesign.

Indesign versión 15.0.1 Mac OS Catalina 10.15.7

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