Haciendo clic en el enlace JavaScript / jQuery con Applescript

Nunca he hecho mucho con AppleScript, pero estoy tratando de automatizar este proceso. Tengo un sitio web con un botón que necesita hacer clic. Sin embargo, el botón se implementa con JavaScript / jQuery / AJAX así:

... $(document).ready(function() { $('#divIdOfButton .divClassOfButton).click(function() { ... }}

Intenté esto sin suerte

 tell application "Safari" activate delay 1 set URL of first document to "http://example.com/" do JavaScript "document.getElementById('divIdOfButton').getElementByClassName('divClassOfButton')[0].click()" in front document end tell 

Hice un montón de búsqueda, pero no pude encontrar nada. Realmente agradecería alguna ayuda.

La mayoría de los navegadores ignorarán las llamadas directas al controlador de eventos de clic, parece (aparentemente por razones de seguridad, no me refiero al modelo de seguridad de JavaScript en los navegadores), por lo que su llamada a click() simplemente no hace nada. Puede activar el evento de clic a través del mecanismo de envío de eventos de JavaScript (consulte esta pregunta y mi respuesta ). Sin embargo, si el sitio al que te diriges ya incluye jQuery, todo lo que necesitas hacer es:

 tell application "Safari" do JavaScript "$('#divIdOfButton .divClassOfButton').click();" in front document end tell 

Si hay varios botones de la clase en su DIV , deberá agregar una expresión de filtro, es decir,

 tell application "Safari" do JavaScript "$('#divIdOfButton .divClassOfButton :equ(0)).click();" in front document end tell 

pero perderá la ventaja de rendimiento de querySelectorAll aprovechado por jQuery sin esto (consulte la documentación de la API de jQuery ).

Probado activando el menú desplegable de la bandeja de entrada en los sitios de desbordamiento de stack en Safari.

Me gustaría ver el UI Browser , es genial para este tipo de cosas, lo uso todo el tiempo.

No soy un usuario de Apple, pero puedo decirle de inmediato que getElementByClassName debe ser getElementsByClassName – “elementos” en plural.