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

Me doy cuenta de que hay varios hilos sobre esto y todos son muy específicos para cierto sitio web. Mi experiencia es en Python, no en Javascript o Applescript, y estoy confundido sobre cómo lograr exactamente 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 representar esto?

Estoy confundido sobre lo que pasa en el medio"document.forms[WHATGOESHERE?].click()"

Estoy tratando de hacer clic en el botón Continuar en http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi .

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 sé qué poner en la secuencia de comandos para hacer clic en este botón en función de los resultados de Inspeccionar elemento? Quiero entender para poder usar este método en más de un caso. No hay un enlace href al que vaya.

ingrese la descripción de la imagen aquí

El código actual no funciona

tell application "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()"
¿Realmente viste mi edición en la última pregunta ( stackoverflow.com/a/21217563/261305 ) sobre cómo hacer clic en el botón Continuar? También he puesto una respuesta aquí que debería arrojar algo de luz sobre lo que está tratando de hacer.

Respuestas (2)

Por un minuto pensé que estabas haciendo la misma pregunta que la última vez.

Pero date cuenta ahora que quieres saber cómo usar Inspect Element para construir tu propio código.

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

WHATGOESHERE sería el nombre del formulario .

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

Su sitio web en su sabiduría ha llamado 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 de entrada

Puede usar la sintaxis de punto de función de envío () al final:

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

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


También

En el código que te proporcioné en tu última pregunta . Solía:

tell document 1

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

    end tell

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

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

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

Obtiene Elements By ClassName ' proceder ' . _

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


Un buen lugar para obtener ejemplos prácticos e información sobre Javascript es 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.

A pesar 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

Deberia trabajar.

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 pagina web
  • Para un formulario conid="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.
No pude hacer que funcionara, pero puse mi código al final de la pregunta. gracias por explicar lo que estaba haciendo ese otro código!
Mi error, insinué que tenía que agregar el método click(). ¡Edité mi respuesta!
No sé por qué no incluí .click() en él porque lo puse allí. ¿Pasa algo con mi applescript que no lo deja funcionar? @matthieu riegler
Con mi nueva edición debería funcionar.