2010-05-14 11 views
7

Estoy tratando de definir un paso para probar el valor del texto alternativo de una imagen usando Capybara y selectores de CSS.¿Cómo puedo probar un valor de alt de imagen usando capibara?

me escribió uno de los valores de entrada en base a los ejemplos readme:

Then /^I should see a value of "([^\"]*)" within the "([^\"]*)" input$/ do |input_value, input_id| 
    element_value = locate("input##{input_id}").value 
    element_value.should == input_value 
end 

pero no puedo imaginar éste ... algo así como:

Then /^I should see the alttext "([^\"]*)"$/ do | alt_text | 
    element_value = locate("img[alt]").value 
end 

Alguien sabe cómo puedo ubicar el valor de texto alternativo?

Respuesta

12

Carpincho utiliza XPath por defecto, por lo menos que haya cambiado la configuración que, que podría ser parte de su problema. (Puede usar locate(:css, "img[alt]")).

que iba a escribir las pruebas usando XPath a ser algo como esto:

Then /^I should see the alt text "([^\"]*)"$/ do | alt_text | 
    page.should have_xpath("//img[@alt=#{alt_text}]") 
end 

Then /^I should see a value of "([^\"])" within the "([^\"])" input$/ do |input_value, input_id| 
    page.should have_xpath("//input[@id=#{input_id} and text()=#{input_value}] 
end 
+0

Gracias Eliza - Cambié la configuración predeterminada ya que usamos principalmente los selectores de CSS – kinet

9

Creo que el método value devuelve el valor de los campos de entrada y no se puede utilizar para probar un atributo.

Algo como esto podría funcionar en su lugar:

page.should have_css("img[alt=the_alt_text_you_are_expecting]") 
7

otra variación sobre el tema:

Then /^I should see the image alt "([^"]*)"$/ do |alt_text| 
    page.should have_css('img', :alt => alt_text) 
end 
+0

Muy simple, pero esto no funcionó para mí. (RSpec 3.0 + Capybara 2.4) –

0

No estoy seguro sobre el método que utiliza para encontrar la imagen, pero esto funciona para mí:

expect(find_by_id("image-1")[:alt]).to have_content('tree') 

Una vez que tenga el elemento de la [:"tag"] le dará el valor.

$thing = find_by_id("image-1")[:alt] 

establecerá el valor si tiene pruebas más complejas.

Cuestiones relacionadas