Utilizzo di Javascript | Applescript per fare clic sul pulsante in Safari

1

Mi rendo conto che ci sono diversi thread su questo e sono tutti molto specifici per alcuni siti web. Il mio background è in Python, non Javascript o Applescript, e sono confuso su come realizzare esattamente questa azione.

Ho visto diversi script che eseguono questa azione, ovvero:

tell application "Safari"

activate

do JavaScript "document.forms['search']['order_list_search_batch'].click()"

end tell

Qual è il metodo migliore per farlo?

Sono confuso su cosa succede tra "document.forms[WHATGOESHERE?].click()"

Sto provando a fare clic sul pulsante Procedi su link .

Sono andato su "Ispeziona elemento" sul pulsante Procedi e ho ottenuto questo codice:

<input style="cursor: pointer;" value="" name="proceed" class="proceed" onmouseover="this.style.cursor=&quot;pointer&quot;" type="submit">

Come faccio a sapere cosa inserire nello script per fare clic su questo pulsante in base ai risultati di Inspect Element? Voglio capire in modo che possa utilizzare questo metodo in più di un caso. Non c'è un link href a cui va.

Ilcodicecorrentenonfunziona

tellapplication"Safari" to activate
open location "http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi"
delay 3
tell application "Safari" to do JavaScript "document.forms[0].elements[document.forms[0].elements.length-1].click()"
    
posta O.rka 30.01.2014 - 21:35
fonte

2 risposte

3

Per un minuto ho pensato che stavi chiedendo lo stesso domanda di nuovo come l'ultima volta.

Ma comprendi ora che vuoi sapere come usare Inspect Element per costruire il tuo codice.

Nell'esempio fornisci: document.forms[WHATGOESHERE?].click()

Il WHATGOESHERE potrebbe essere il nome del modulo.

i.e document.forms['theFormName'].click()

Il tuo sito web nella loro saggezza ha denominato il modulo " form "

<form method="post" action="/cgi-bin/RNAfold.cgi" enctype="multipart/form-data" name="form"> <input type="hidden" name="PAGE" value="2">

i.e document.forms['form'].click()

Ma ciò non farebbe clic sul pulsante input

È possibile utilizzare la funzione sintassi del punto submit () alla fine:

document.forms['form'].submit()

Safari Applescript: do JavaScript "document.forms['form'].submit()"

Anche

Nel codice ti ho fornito l'ultimo domanda . Ho usato:

tell document 1

        do JavaScript "document.getElementsByClassName('proceed')[0].click()"

    end tell

Questo usa il nome della classe proceed dell'elemento di input delle form visto qui: class = " proceed"

<input value="" name="proceed" type="submit" class="proceed" onmouseover="this.style.cursor=&quot;pointer&quot;" style="cursor: pointer;">

Il getElementsByClassName('proceed')[0] fa esattamente quello che dice.

È ottiene gli elementi di ClassName " procedere ".

Il [0] significa che ti darà il primo elemento nei suoi risultati dalla matrice che verrebbe restituita. L'array viene conteggiato da 0-9. Quindi il primo elemento sarebbe l'elemento 0.

Un buon posto per ottenere esempi di lavoro e informazioni su Javascript è su www.w3schools.com Sulla prima pagina ci sono link ai loro Esempi ed esercitazioni HTML e Javascript. Gli elementi delle funzioni HTML Dom e Javascript sono elencati per un facile accesso.

    
risposta data 30.01.2014 - 22:58
fonte
2

Nonostante questo sito abbia un codice di merda (troppo pochi ID), qualcosa del tipo:

tell application "Safari"
    activate
    open location "http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi"
    delay 3
    do JavaScript "document.forms['form'].submit()" in current tab of window 1
end tell

dovrebbe funzionare.

Cerca l'ultimo elemento del primo modulo nella pagina.

Solo così sai:

document.forms['search']['order_list_search_batch'].click()

Questa riga è la seguente:

  • Sembra nella pagina web
  • Per un modulo con id="search"
  • All'interno di tale modulo, cerca un nodo figlio con id=order_list_search_batch .
  • Una volta trovato questo oggetto, esegue un clic su di esso.
risposta data 30.01.2014 - 21:46
fonte

Leggi altre domande sui tag