2009-10-01 13 views
5

Tenemos un proyecto de interfaz de usuario web en MVC y para las pruebas automatizadas, estamos usando Selenium, es una herramienta brillante. Pero estoy enfrentando algún problema al generar eventos con Selenium.Selenium RC y eventos de control de entrada

Escenario: Tengo un cuadro de texto que espera un valor + ve y genera un error (javascript) cuando se ingresa un valor -ve y presiono la pestaña de ese cuadro de texto o hago clic afuera en cualquier parte de la página.

Funciona bien con la interacción normal del usuario con el sitio web pero al usar selenio no puedo lograr este comportamiento. Estoy poniendo texto con Selenium.Type ('elementId', - ve value) el evento no se dispara y el error no se dispara.

Intenté usar FireEvent ("textboxId", "blur") pero no funciona. La única solución es enfocar en el cuadro de texto, agregar algún valor, usar FireEvent ("cuadro de texto", "desenfoque") y luego enfocar en otro cuadro de texto.

¿Alguien tiene alguna idea para resolver esto?

Respuesta

1

Su solución alternativa no suena como una mala opción. Cuando enfocas el campo, luego cambias el contenido y luego te desenfocas (centrándote en otro campo) es exactamente la misma interacción que el usuario.

Una alternativa diferente (todavía prefiero la que se centra en otro campo) es usar getEval para activar la función javascript que valida el campo. Puede comprobar este tutorial sobre cómo hacerlo: http://www.theautomatedtester.co.uk/seleniumtraining/Selenium_JavaScript.htm

4

yo era capaz de conseguir este trabajo con el cliente Java en Selenio RC llamando

  • tipo ("id = textboxid", "nuevoValor");

y luego

  • fireEvent ("id = textboxid", "desenfoque");

¿Recibió alguna indicación de si el evento "desenfoque" se estaba disparando? Me pregunto si tal vez el localizador no estaba funcionando bien para despedir el evento.

Sean cuales sean los pequeños trucos que necesita para lograr que funcione, para evitar hacer esto para cada campo, debe ajustar sus 2-3 llamadas en una función si usa un cliente RC o register some user extensions para hacerlo en un solo paso si estás usando el Selenium IDE.

0

"Blur" es un gran hallazgo! Gracias.

Mi problema era un poco diferente. Así es como usé "desenfoque" para una lista desplegable (principal) que no estaba publicando para llenar una segunda lista desplegable (secundaria) (por ejemplo, estado y condado).

  1. Selenium.Focus ("id = drpdwnState");
  2. Selenium.Select ("id = drpdwnState", "label = Michigan");
  3. Selenium.FireEvent ("id = drpdwnState", "blur");
  4. Selenium.Focus ("id = drpdwnCounty");
  5. Selenio.Seleccione ("id = drpdwnCounty", "label = Grand Traverse");

Espero que esto ayude a alguien. ¡Salud!

Cuestiones relacionadas