2012-05-25 4 views
8

Tengo una página con varios enlaces como que <a href='/bla/bla/bla/?page=xxx>text</a> Quiero coincidir certains xxx valores enlaces usando capibara y RSpec, i no se preocupan por bla/bla/bla parte de href atributo.Carpincho + Rspec cómo hacer coincidir una parte del atributo de etiqueta

page.should have_selector("div.class ul li a", :href => "page=2") 

no funciona, también

page.should have_xpath("//a[@href='page=2']") 

no es una opción porque no sé el valor total href atributo.

PD: tampoco encontré ninguna documentación completa de la API de Capybara solo para obtener todos los métodos disponibles y la descripción de los parámetros. ¿Hay tal cosa?

+0

Re. documentación, en [Capybara readme.md] (https://github.com/jnicklas/capybara) en Github, busque la sección de "Encontrar". Esa sección se refiere a Rubydoc en [Capybara :: Node :: Finders] (http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders) para una referencia completa. –

Respuesta

14

Intente utilizar contains:

page.should have_xpath "//a[contains(@href,'page=2')]" 
+1

gracias, eso es lo que estaba buscando, desafortunadamente el capibara no encuentra la documentación completa :( – aristofun

3

Prueba esto:

link = page.find('div.class ul li a') 
link[:href].should match(/page=2/) 

Más información here.

+0

que encuentra el primer elemento y verifica su href, pero busco para que coincida si hay algún elemento – aristofun

+0

Entonces, ¿quieres hacer dos afirmaciones, entonces ... primero que el enlace que deseas existe y luego que su valor href contiene/page = # {some_value} /. Además, creo que vale la pena probar la existencia, vale la pena dar una identificación. No debería tener que buscar 'div.class ul li a') –

Cuestiones relacionadas