2012-07-31 20 views

risposta

6

Questo selettore css dovrebbe funzionare in Capybara:

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

che corrisponderà a

<div class="a b"> ma non <div class="a">

+0

Che funziona. Potrebbe essere fatto con XPath? –

+1

sì ma è più brutto. http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez

5

Si può fare questo:

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

Se non si utilizza RSpec, è questo:

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

Ciò richiede Rspec, non è vero? –

+1

Sì. Puoi usare 'page.has_css? ('Div.a.b')' se non vuoi RSpec. – Dougui

2

soluzione XPath:

Uso:

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

Questo seleziona qualsiasi div secondario del nodo contesto, il cui class attributo contiene entrambe le classi "a" e "b".

Se viene richiesto che l'attributo di qualsiasi class selezionato div contiene esattamente (solo) queste due classi e altre classi, utilizzare:

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