2011-04-14 27 views
5

Estoy intentando probar una página utilizando el complemento FF Selenium IDE.Selenium IDE - JQuery controlador onclick no activado

Hay una estructura de menú como el siguiente ..

<ul class="parent"> 
    <li class="child"><span><a href="something.html">link text</a></span></li> 
    <li class="child"><span><a href="somethingelse.html">other text</a></span></li> 
<ul> 

Los elementos li tienen un evento vuelo estacionario con destino a ellos. Esos eventos de desplazamiento registran un evento de clic en la etiqueta de enlace real. (He despojado a cabo algunos de los JavaScript para simplificar)

var menu = $('ul.parent'); 

    $("> li.child", menu).hover(function() { 

    $(this).find('> a').click(function() {    
     $(this).parent().addClass('active-trail'); 
     return false; 
    }); 
    }, function() {}); 

Si se utiliza selenio hago clic en uno de estos enlaces entonces yo esperaría que el manejador a ser llamado. No lo es y el clic simplemente se ejecuta (y se sigue el enlace, en lugar de devolverse el falso).

He intentado (después de leer otras respuestas) mouseUp y mouseDown. También intenté usar fireEvent para pasar primero el cursor sobre el li (para activar el evento hover) y luego otro fireEvent para hacer clic en el ancla ... pero tampoco funcionó.

Así que cualquier ayuda sería muy apreciada. ¡Solo una demostración básica del uso de Selenium para activar un manejador de clics provisto por jquery probablemente sea suficiente para verme bien!

Gracias, Patrick.

Respuesta

2

Tienes razón con fireEvent(), ¿estás seguro de que la estás usando, verdad?

Si desea disparar el controlador onClick, haría fireEvent(locator, "click") no fireEvent(locator, "onClick").

Probablemente esté haciendo esto bien si está utilizando IDE de selenio para generar los scripts.

Selenium es un poco esquivo en esta área, he tenido muchos problemas similares.

+0

Sí, ciertamente usando "hover" y "click" como manejadores. ¡Es bueno saber que estoy buscando en el área correcta! –

+0

Puede ser algo relacionado con el hecho de que Selenium no espere a que el control deslizante se ejecute antes de intentar hacer clic, intente agregar una espera entre los dos comandos. – Tnem

+0

Intenté usar la pausa, pero no hizo la diferencia. Curiosamente, si cargo la página, muevo el mouse sobre el elemento (activando de forma manual el desplazamiento) y luego ejecuto un evento de clic; luego aparece el menú. –

1

¿Ha intentado utilizar XPath es decir

selenium.Click ("XPath =/descendiente :: li [contiene (,." Algo ")] [2]/x: un")