0 votos

AppleScript : hacer JS en diferentes ventanas de Safari

Estoy usando un script que básicamente obtiene el texto de safari, hace clic en el botón y rellena el campo de texto.

p. ej:

tell application "Safari"
    set texttograb to do JavaScript "document.getElementsByClassName('the_variable_as_text')[0].value;" in document 1
    do JavaScript "document.getElementsByClassName('text-entry')[0].value=" & quoted form of myText in last tab of window 1
    do JavaScript "document.getElementsByClassName('Approve-button')[0].click();" in last tab of window 1
end tell

Esto funciona perfectamente pero tengo un cambio en mi flujo de trabajo y necesito usar otra ventana de safari.

Cómo puedo referir un javascript a una ventana específica de safari y el otro a una ventana diferente. Especialmente cuando alguna pestaña puede tener la misma URL/Nombre?

Recuerdo que viendo que hace un tiempo (cuando la pestaña resulta tener el mismo nombre pero nunca consigo ejecutar un script que haga referencia al id de la ventana

De lo contrario, supongo que puedo utilizar otro navegador web (por ejemplo, un safari la segunda vista previa de la tecnología de safari) como una solución, pero que no es realmente ideal y limitar a dos de Windows

¿alguna idea de cómo puedo encontrar el ID de la ventana y referirme a él en AppleScript/JS?

0voto

KevinCork Puntos 82

No es lo mejor (no funciona si la misma pestaña está abierta en diferentes Windows) pero esto parece funcionar

set searchpat to "My Tab"
tell application "Safari"
    set winlist to every window
    set winmatchlist to {}
    set tabmatchlist to {}
    set tabnamematchlist to {}
    repeat with win in winlist
        set ok to true
        try
            set tablist to every tab of win
        on error errmsg
            set ok to false
        end try
        if ok then
            repeat with t in tablist
                if searchpat is in (name of t as string) then
                    set end of winmatchlist to win
                    set end of tabmatchlist to t
                    set end of tabnamematchlist to (id of win as string) & "." & 1 & ".  " & (name of t as string)
                    set theWindowID to (id of win as string)
                    ##return (index of t as string)
                    --display dialog name of t as string                    
                end if
            end repeat
        end if
    end repeat

    set w to item 1 of winmatchlist
    set t to item 1 of tabmatchlist

    set current tab of w to t
    set index of w to 1

end tell

entonces puedo referir la ventana usando theWindowID

Por ejemplo

tell application "Safari" to tell window id theWindowID to set current tab to tab 1

o

do JavaScript ResolutionPopUp in tab 1 of window id theWindowID

(Me refiero a la ficha manualmente)

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