Usando Javascript | Applescript para hacer clic en el botón en Safari

1

Me doy cuenta de que hay varios hilos sobre esto y todos son muy específicos para ciertos sitios web. Mi experiencia está en Python, no en Javascript o en Applescript, y estoy confundido sobre cómo lograr esta acción.

He visto varios scripts haciendo esta acción, a saber:

tell application "Safari"

activate

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

end tell

¿Cuál es el mejor método para resolver esto?

estoy confundido sobre lo que va entre "document.forms[WHATGOESHERE?].click()"

Estoy tratando de hacer clic en el botón Continuar en enlace .

Fui a "Inspeccionar elemento" en el botón Continuar y obtuve este código:

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

¿Cómo puedo saber qué poner en el script para hacer clic en este botón basado en los resultados del elemento Inspeccionar? quiero entender para poder usar este método en más de un caso. No hay un enlace href al que vaya.

Elcódigoactualnofunciona

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()"
    
pregunta O.rka 30.01.2014 - 21:35

2 respuestas

3

Por un momento pensé que estabas preguntando lo mismo pregunta de nuevo como la última vez.

Pero comprenda que ahora quiere saber cómo usar el elemento Inspeccionar para construir su propio código.

En el ejemplo que das: document.forms[WHATGOESHERE?].click()

El WHATGOESHERE sería el nombre del formulario.

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

En su sabiduría, su sitio web ha nombrado el formulario ' formulario '

<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()

Pero esto no haría clic en el botón entrada

Puede utilizar la sintaxis de puntos de la función submit () al final:

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

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

También

En el código que le proporcioné en su último pregunta . Yo utilicé:

tell document 1

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

    end tell

Esto usa el nombre de la clase proceder del elemento de entrada de formularios que se ve aquí: class="proceed"

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

El getElementsByClassName('proceed')[0] hace exactamente lo que dice.

obtiene los elementos por ClassName ' proceder '.

El [0] significa que le dará el primer elemento en sus resultados de la matriz que se devolverá. La matriz se cuenta de 0-9. Así que el primer elemento sería el elemento 0.

Un buen lugar para obtener ejemplos de trabajo e información sobre Javascript es en www.w3schools.com En la página principal, tienen enlaces a sus Ejemplos y tutoriales de HTML y Javascript. Los elementos de las funciones HTML Dom y Javascript se enumeran para facilitar el acceso.

    
respondido por el markhunte 30.01.2014 - 22:58
2

A pesar del hecho de que este sitio web tiene un código de mierda (muy pocas identificaciones), algo como:

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

debería funcionar.

Busca el último elemento del primer formulario en la página.

Solo para que sepas:

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

Esta línea hace lo siguiente:

  • Se ve en la página web
  • Para un formulario con id="search"
  • Dentro de ese formulario, busca un nodo secundario con id=order_list_search_batch .
  • Una vez que se encuentra este objeto, realiza un clic en él.
respondido por el Matthieu Riegler 30.01.2014 - 21:46

Lea otras preguntas en las etiquetas