Habrá muchos navegadores Safari ejecutándose en mi máquina. Quiero ejecutar algunos comandos de javascript en un Safari específico usando los PID
's.
Aquí tengo el código en Applecript:
tell application "System Events"
set proc to item 1 of (processes whose unix id is 2375)
tell proc
using terms from application "Safari"
tell proc to do JavaScript "" in document 1
end using terms from
end tell
end tell
donde 2375
es una de las ID de proceso del navegador Safari que se ejecuta. Pero ejecutar este Applecript me da el error:
System Events got an error: "" doesn’t understand the “do JavaScript” message.
Parece que el comando tell va a los eventos del sistema, en lugar de a Safari.
¿Dónde estoy cometiendo el error?
Editar:
Con la lucha, se me ocurrió esta solución:
on run argv
set pid to item 1 of argv
set fileLocation to item 2 of argv
tell application "System Events"
set theprocs to every process whose unix id is pid
repeat with proc in theprocs
set the frontmost of proc to true
end repeat
end tell
tell application "System Events" to set frontApp to name of first process whose frontmost is true
if (frontApp = "Safari") then
using terms from application "Safari"
tell application frontApp to activate
set theScript to "document.querySelector(\"input[name='fileField']\").click()"
tell application frontApp to do JavaScript theScript in document 1
end using terms from
tell application "System Events" to tell process frontApp
keystroke "G" using {command down, shift down}
delay 2
key code 51
delay 2
keystroke fileLocation
delay 2
key code 52
delay 5
key code 52
delay 5
end tell
tell application "System Events"
set theprocs to every process whose unix id is pid
repeat with proc in theprocs
set the frontmost of proc to false
end repeat
end tell
end if
end run
Un problema que estoy enfrentando es la parte:
if (frontApp = "Safari") then
using terms from application "Safari"
tell application frontApp to activate
está abriendo la otra aplicación Safari, en lugar de la aplicación cuyo frontmost
es true
(Estoy haciendo que frontmost
es true
para el pid
dado en la primera parte del script). ¿Alguna idea de dónde estoy cometiendo el error?