Consulta cucumber

59 views
Skip to first unread message

Juan Ignacio Cadierno

unread,
Mar 21, 2013, 3:16:52 PM3/21/13
to rub...@googlegroups.com
Hola Gente:
Tengo una duda sobre cucumber, tengo un metodo ajax a testear. El mismo carga una tabla como resultado de la busqueda. Apenas ingreso a la pagina la tabla no esta, sino que se carga despues de ejecutar el metodo. Como resultado me dice que capybara no puede encontrar el elemento table. Soy nuevo en este tema y queria saber que necesito hacer para poder realizar este test.
Desde ya gracias.
Saludos







Nicolás Berger

unread,
Mar 21, 2013, 4:17:11 PM3/21/13
to rub...@googlegroups.com
Juan,

Estás corriendo el feature con un driver que soporte javascript? La
última vez que usé cucumber con capybara, al agregarle el tag
@javascript al feature se corría con selenium-webdriver, que soporta
javascript, en lugar de rack-test, que no soporta. También podés
utilizar otros drivers como poltergeist o capybara-webkit que tienen
otras ventajas, pero lo primero es lograr que te funcione.

Una vez que corras con un driver javascript, capybara tiene un
mecanismo para esperar a que aparezcan los elementos que no encuentra,
que pueden estar siendo cargados luego de una llamada ajax como es tu
caso.

Saludos,
Nico

2013/3/21 Juan Ignacio Cadierno <jicad...@gmail.com>:
> --
> Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos
> de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> rubysur+u...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
>
>

Alvaro Fernando Lara

unread,
Mar 21, 2013, 4:19:35 PM3/21/13
to rub...@googlegroups.com
Hola Juan Ignacio, el problema que estas teniendo es por el driver que estas utilizando para hacer las consultas. Capybara tiene la posibilidad de utilizar drivers que sean conscientes del javascript que se esta ejecutando (algunos ejemplos son Selenium y Poltergeist).

Ahora, yo estuve usando Poltergeist para probar javascript y la verdad que me gusto mucho (ademas de ser headless, con lo cual los test corren bastante mas rápido, verifica y notifica de errores en javascript).

Te dejo los enlaces a el repositorio de poltergeist: https://github.com/jonleighton/poltergeist . Para engancharlo con capybara, yo recomiendo el readme de capybara en github https://github.com/jnicklas/capybara#drivers

Espero te sirva!

Raúl Castro

unread,
Mar 21, 2013, 3:58:28 PM3/21/13
to rub...@googlegroups.com
Hola Gringsoft,

  podes implementar un step que haga "sleep x" donde x son los segundos que queres esperar a que termine la llamada AJAX. No te recomiendo mucho tiempo ya que si no los escenarios se empiezan a hacer muy pesados.
Ejemplos:
Step /^I wait for the (long |)AJAX call to finish$/ do |long|
  seconds = long =~ /long/ ? 2 : 0.75
  sleep seconds
end

Step /^I wait for (\d+) seconds?$/ do |count|
  sleep count.to_i
end

  No se si sea la mejor solución, pero es una.

Abrazo!


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--

Juan Ignacio Cadierno

unread,
Mar 21, 2013, 7:57:09 PM3/21/13
to rub...@googlegroups.com
Hola 
Gracias a todos por sus respuestas, estoy intentando instalar 

Poltergeist - A PhantomJS driver for Capybara, pero no logro que me encuentre el archivo PhantomJS.

Como se instala o donde lo puedo ubicar porque seguí los pasos y me da error.

Saludos
Juan Ignacio Cadierno
Analista de Sistemas
Owner Gringsoft






Nicolás Sanguinetti

unread,
Mar 21, 2013, 7:58:16 PM3/21/13
to rub...@googlegroups.com
Qué error te da?


2013/3/21 Juan Ignacio Cadierno <jicad...@gmail.com>
Hola 

Alvaro Fernando Lara

unread,
Mar 21, 2013, 8:10:22 PM3/21/13
to rub...@googlegroups.com
No se en que entorno estas, voy a suponer que es un Linux de 32 (ubuntu tal vez?). El readme de poltergeist te da el link para descargártelo. Ahora para que la librería lo encuentre necesitas poner el binario en algún lugar donde el sistema pueda encontrarlo.

Osea, hay que poner el binario que nos bajamos (debe haber un archivo ejecutable que se llame phantomjs), y:

1) Moverlo a un directorio que se encuentre dentro del PATH (echo $PATH en una consola para ver lo posibles lugares)
2) Agregarle a la variable de entorno PATH la ruta donde descargaste y se encuentra el ejecutable.

Una vez que hayas hecho alguna de las dos cosas, por seguridad, cerra la consola y volver a abrirla, si poder correr el comando phantomjs, entonces ahora vas a poder correr los tests.

Espero haya podido guiarte un poco mas.

Juan Ignacio Cadierno

unread,
Mar 22, 2013, 11:17:51 AM3/22/13
to rub...@googlegroups.com
GRACIAS !!! solucionado

Lorenzo Jorquera

unread,
Mar 27, 2013, 7:48:48 AM3/27/13
to rub...@googlegroups.com
Creo que para este tipo de tests, es mas conveniente usar loops que verifiquen si la llamada terminó y con sleeps cortos dentro del loop y un limite de iteraciones. De esta manera, si la llamada vuelve rápido, tus tests pueden seguir avanzando.

 

2013/3/21 Raúl Castro <thund...@gmail.com>
Hola Gringsoft,

  podes implementar un step que haga "sleep x" donde x son los segundos que queres esperar a que termine la llamada AJAX. No te recomiendo mucho tiempo ya que si no los escenarios pueden tardar mucho.
Ejemplos:
Step /^I wait for the (long |)AJAX call to finish$/ do |long|
  seconds = long =~ /long/ ? 2 : 0.75
  sleep seconds
end

Step /^I wait for (\d+) seconds?$/ do |count|
  sleep count.to_i
end

  No se si sea la mejor solución, pero es una.

Abrazo!


Rodrigo Martín

unread,
Mar 27, 2013, 10:40:53 AM3/27/13
to rub...@googlegroups.com

Rodrigo Martín

unread,
Mar 27, 2013, 10:43:40 AM3/27/13
to rub...@googlegroups.com
oops... si usas la version 2 de capybara no existe mas wait_until... peeeeeeeeero:
Reply all
Reply to author
Forward
0 new messages