2011-01-27 4 views
9

Tengo un escenario que valida que la imagen que acabo de subir existe en la página siguiente.¿Cómo hago una búsqueda de expresiones regex xpath en mi definición de paso de Cucumber/Capybara (Rails 3)?

Esto a continuación funciona muy bien, excepto que tengo una estructura de carpeta variable basada en el listing_id. ¿Cómo puedo usar la expresión regular aquí para que coincida con la imagen solo en el nombre del archivo en lugar de la URL completa?

Then /^I should see the image "(.+)"$/ do |image| 
    page.should have_xpath("//img[@src=\"/public/images/#{image}\"]") 
end 

Respuesta

15

Trate page.should have_xpath("//img[contains(@src, \"#{image}\")]"), que coincidirá con cualquier img cuya src contiene el nombre del archivo.

+0

Sugeriría usar la función 'ends-with'. –

+0

@ alpha-mouse ¿puede mostrar un ejemplo de código de eso? –

+0

@Jamis: Quise utilizar la función XPath 'ends-with' en lugar de' contains'. No sé nada sobre ruby ​​pero copiar y pegar el código de @dmarkow dará 'page.should have_xpath (" // img [ends-with (@src, \ "# {image} \")] ")' –

0

Si usted tiene la opción a continuación, utilizando un selector CSS es más concisa en este caso:

page.should have_selector(:css, "a[href$='#{image}']") 

la Nota de la $ 'en la continuación final de 'href$' para denotar a juego contra el extremo de la cadena.

Cuestiones relacionadas