Esegui Javascript su Safari specifico usando Applescript

0

Ci saranno molti browser Safari in esecuzione nella mia macchina. Voglio eseguire alcuni comandi javascript su Safari specifici usando PID .

Ho il codice in applescript per questo qui:

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

dove 2375 è uno degli id di processo del browser Safari in esecuzione. Ma l'esecuzione di questo applescript mi dà l'errore:

System Events got an error: "" doesn’t understand the “do JavaScript” message.

Sembra che il comando tell sia impostato su Eventi di sistema, piuttosto che su Safari.

Dove sto facendo l'errore?

Modifica:

Con la lotta, mi è venuta in mente questa soluzione:

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 che sto affrontando è la parte:

if (frontApp = "Safari") then
            using terms from application "Safari"
                tell application frontApp to activate

sta aprendo l'altra applicazione Safari, piuttosto che l'applicazione il cui frontmost è true (sto rendendo il frontmost is true per il dato pid nella prima parte dello script). Qualche idea, dove sto facendo l'errore?

    
posta Ant's 24.02.2015 - 06:50
fonte

0 risposte

Leggi altre domande sui tag