2012-07-31 16 views

Respuesta

6

Este selector CSS debe trabajar en capibara:

page.has_css?('div.a.b') 

cuales coincidirá con

<div class="a b"> pero no <div class="a">

+0

Eso funciona. ¿Podría hacerse con XPath? –

+1

sí, pero es más feo. http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez

5

Usted puede hacer esto:

page.should have_css('div.a.b') 

Si no se utiliza rspec, es la siguiente:

page.has_css?('div.a.b') 
+0

Esto requiere Rspec, ¿verdad? –

+1

Sí. Puedes usar 'page.has_css? ('Div.a.b')' si no quieres RSpec. – Dougui

2

solución XPath:

Uso:

div[contains(concat(' ', @class, ' '), ' a ') 
    and 
    contains(concat(' ', @class, ' '), ' b ') 
    ] 

Esto selecciona cualquier niño div del nodo de contexto, cuyo class atributo contiene tanto las clases "a" y "b".

Si se requiere que el atributo seleccionado class de cualquier div contiene exactamente (sólo) estas dos clases y no hay otras clases, utilizar:

div[contains(concat(' ', @class, ' '), ' a ') 
    and 
    contains(concat(' ', @class, ' '), ' b ') 
    and 
    string-length(normalize-space(@class)) = 3 
    ] 
Cuestiones relacionadas