El siguiente applescript espera a que se cargue una página antes de continuar con la do javascript "document.body.innerText"
parte del script. Parece funcionar muy bien excepto por una cosa. Si Safari se está ejecutando pero no hay ninguna ventana abierta actualmente, la ejecución de este script da como resultado
error "Safari recibió un error: la conexión no es válida". número -609
Sin embargo, si ejecuto esto cuando Safari está cerrado, inicia Safari, va a la URL especificada y, una vez que se carga la página, ejecuta la parte de javascript. No entiendo por qué aparece un error si Safari se está ejecutando sin ventanas abiertas.
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 la source as text
parte del script. Intenté cambiar length of (source as text) is not 0
a repeat until name is "example domain"
pero el error aún ocurre si no hay ventanas abiertas y Safari se está ejecutando.
Debe intercambiar la posición de la activate
línea de código con la 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 secuencias de comandos, a continuación, se ejecutó con Safari abierto y sin ninguna ventana abierta.
Primero tuve que marcar "[√] Mostrar el menú Desarrollar en la barra de menú" (Safari > Preferencias... > Avanzado) y luego en el menú Desarrollar, hacer clic en "Permitir JavaScript de Apple Events". A continuación, copié y pegué su código AppleScript en el Editor de secuencias de comandos, hice clic en el botón Ejecutar la secuencia de comandos y se ejecutó sin errores y devolvió el texto de la página web http://example.com . Sin embargo, Safari estaba cerrado cuando ejecuté el script por primera vez.
Después de leer su pregunta nuevamente, pude reproducir el error al tener Safari abierto sin ninguna ventana abierta. Luego miré más detenidamente su código y noté activate
que estaba antes if not (exists document 1) then reopen
y activate
debe estar después para evitar el error.
Restablecer mi archivo de preferencias solucionó esto para mí. Para hacer eso, mantenga presionadas las teclas Comando + Opción + Control + Mayús mientras abre la aplicación Indesign.
Indesign versión 15.0.1 Mac OS Catalina 10.15.7
I0_ol
activate
Nunca se me pasó por la cabeza estar en el lugar equivocado. Funciona perfectamente ahora. Gracias por resolver otra de mis preguntas relacionadas con Apple.