Selinium & UpdatePanel[WaitForXXXXXX]
Selenium , es una aplicacion para hacer test automaticos, simula acciones de usuarios en un navegador. mas adelante me metere mas en lo que es selinum y ventajas de usar una herramienta como esta.
Bueno en selenium tenemos varios comandos. por el ejemplo el type, click, typeAndWait, ClickAndWait.
bueno la direferencia entre el clickAndWait y click es que el AndWait espera que se recarge la pagina.
Pero con los update panels no recarga la pagina completa, entonces no me sirve un click ni tampoco un clickAndWait.
En Selinium Existe la forma de que quede esperando una accion "WaitForXXXXX" , por ejemplo podemos decirle a selenium que espere a que un elemento este habilidado, esto es super bueno si tenemos peteciones http asincronicas y despues de esto habilitamos un control. pero con los updatepanel, no siempre hay una accion visible atravez del un control[amenos que pongamos el tipico div de "Cargando"].
Entonces existe el comando WaitForCondicion, donde uno especifica un script javascript mas un tiempo de timeout. para el caso de los updatepanel, vemos que se haya registrado el Endrequest de la pagina de la siguiente forma esto si estamos con el plugin de firefox:
En mi caso el test en html quedo asi:
En el caso que se programaticamente, para incluilo en un test unitario y luego incluirlo en Cruise control.
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Bueno en selenium tenemos varios comandos. por el ejemplo el type, click, typeAndWait, ClickAndWait.
bueno la direferencia entre el clickAndWait y click es que el AndWait espera que se recarge la pagina.
Pero con los update panels no recarga la pagina completa, entonces no me sirve un click ni tampoco un clickAndWait.
En Selinium Existe la forma de que quede esperando una accion "WaitForXXXXX" , por ejemplo podemos decirle a selenium que espere a que un elemento este habilidado, esto es super bueno si tenemos peteciones http asincronicas y despues de esto habilitamos un control. pero con los updatepanel, no siempre hay una accion visible atravez del un control[amenos que pongamos el tipico div de "Cargando"].
Entonces existe el comando WaitForCondicion, donde uno especifica un script javascript mas un tiempo de timeout. para el caso de los updatepanel, vemos que se haya registrado el Endrequest de la pagina de la siguiente forma esto si estamos con el plugin de firefox:
var busyFunc = selenium.browserbot.getCurrentWindow().Sys.WebForms.PageRequestManager.get_inPostBack;
busy = (busyFunc == null)?true:busy = busyFunc();
busy == false;
En mi caso el test en html quedo asi:
waitForCondition | "var busyFunc = selenium.browserbot.getCurrentWindow(). Sys.WebForms.PageRequestManager.get_inPostBack; busy = (busyFunc == null)?true:busy = busyFunc(); busy == false;" | 300 |
selenium.WaitForCondition( "var busyFunc = selenium.browserbot.getCurrentWindow().Sys.WebForms.PageRequestManager.get_inPostBack; busy = (busyFunc == null)?true:busy = busyFunc(); busy == false;", "10000");
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Hola Victor
ResponderEliminarEstoy comenzando con esto de los tests con selenium y me surge un problema. Tengo que evaluar el número de elementos disponibles en un select y lo más próximo que veo es esto: (selenium.browserbot.getCurrentWindow().document.getElementById("series").options.length == N)
pero me falla. el objeto selenium no entiende browserbot ¿que estoy haciendo mal?
mi email es dmunozva@gmail.com
Un saludo
hola Daniel:
ResponderEliminarestas usando el plug in de selenium o estas con el servidor de selenium???
mira yo estuve buscando y encontre storeSelectOptions
simplemente buscar
recibe dos parametros, uno el select y otro el nombre de la varible donde deseas dejar el resultado.
ej:
storeSelectOptions("myselect","variable");
despues para mostralo simplemente haces un
echo ${varible}
todo esto en el selenium IDE(plug in de firefox).
esto retorna todos los labels de un select, ahora hay que buscar como hacer un split, ya que separa todos los labels o etiquetas con una coma
bueno si encuentras como hacer eso me avisas :D.
suerte y ojala te haya servido mi ayuda.