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.

3 Solutions collect form web for “Haciendo clic en el enlace JavaScript / jQuery con Applescript”

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.

  • Cómo usar la function de callback en las funciones de JavaScript
  • Ejecutar un bookmarklet en un iFrame que proviene de un dominio diferente
  • Almacenamiento de una respuesta de una request de la API de JavaScript de Google
  • JavaScript 'izando'
  • Reenvío de carga de script asíncrono
  • ¿Un marco JS del lado del cliente con templates y almacenamiento en caching?
  • Y a nivel de bit en Javascript con un integer de 64 bits
  • Orden de elevación en JavaScript
  • Llamar método de object padre dentro de la function con controller de callback
  • ¿Cómo pasar el context a la function anónima?
  • Columnas de tabla networkingimensionables
  • Página web con alto uso de CPU: cómo crear un perfil
  • Google Chrome no me deja colocar puntos de interrupción
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.