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="pointer"" 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.
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()"
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="pointer"" 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:
id="search"
id=order_list_search_batch
.
markhunte