2011-11-16 31 views
16

estoy trabajando con Ruby on Rails 3, pepino, y Carpinchocapibara, encontrando dentro de un elemento css

He estado buscando desde hace bastante tiempo, y no puedo encontrar la manera de encontrar una específica elemento de página dentro de una etiqueta css. En mi caso, necesito asegurarme de que se encuentre un nombre dentro de una tabla, y no en "Bienvenido [Nombre]".

He intentado algo así como:

within('table') do 
    page.body.index("[Name]") 
end 

Y tengo una tabla con id='table'.

Pero me gustaría saber cómo hacer esto para cualquier elemento css, tales como:

within('h2') do 
    page.body.should have_content ('stuff') 
end 

Creo que mi problema tiene que ver con page.body, pero no estoy seguro de cómo contenerlo a una etiqueta css en particular.

¡Gracias de antemano!

Respuesta

31

El matcher de Capybara within solo coincide con el primer resultado, por lo que si tiene varias etiquetas h2, solo se verá en la primera.

En su lugar, intente have_css con la opción :text.

page.should have_css("#table", :text => "[Name]") 
page.should have_css('h2', :text => 'stuff') 
+0

Esto funciona, habría una buena manera de conseguir que el índice del elemento que se encuentra? Entonces, si quisiera comparar el orden de dos elementos en una tabla, creo que la mejor manera sería encontrar el índice de cada uno y compararlos. – ardavis

+1

'' page.should have_selector() '' también funciona – s2t2

12

Para buscar un elemento específico:

page.find('#table').should have_text('stuff') 
+5

have_text ya no es compatible. Use page.find ("# table"). Should have_content ('stuff') en su lugar. – y0mbo

0

que he hecho cosas como esta: page.all(:css, 'button.btn-primary.days.active').size.should == 1

Para comprobar si hay elementos que contienen un conjunto específico de clases.
No necesité buscar un valor de texto en particular del elemento. Solo quería asegurar la existencia del elemento y cuántos de ellos había.

3

supongo que todas las respuestas deben trabajar pero ahora Carpincho no debe utilizar más Utiliza esperar

expect(page).to have_css("#table", :text => "[Name]") 
expect(page).to have_css('h2', :text => 'stuff') 
Cuestiones relacionadas