2012-07-31 17 views
7

मेरे पास 2 संभावित divs हैं।जांचें कि क्या तत्व में दो वर्ग हैं

<div class='a b'></div> 

और

<div class='c d'></div> 

वहाँ अगर div तत्व 2 वर्गों ए और बी की जांच के लिए एक रास्ता है?

मैं तत्वों का चयन करने के लिए रूबी, कैपिबारा और XPath का उपयोग करता हूं लेकिन सीएसएस ठीक है अगर यह समस्या हल कर सकता है।

उत्तर

6

यह सीएसएस चयनकर्ता capybara में काम करना चाहिए:

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

आप rspec उपयोग नहीं करते हैं, यह इस है

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

जो

से मेल खाएगा <div class="a b"> नहीं बल्कि <div class="a">

+0

यह काम करता है। क्या यह XPath के साथ किया जा सकता है? –

+1

हां लेकिन इसके बदसूरत। http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez

5

आप ऐसा कर सकते हैं:

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

यह Rspec की आवश्यकता है, यह नहीं है? –

+1

हां। यदि आप आरएसपीसी नहीं चाहते हैं तो आप 'page.has_css? (' Div.a.b ') का उपयोग कर सकते हैं। – Dougui

2

XPath समाधान:

उपयोग:

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

इस संदर्भ नोड में से किसी div बच्चे, जिनकी class विशेषता दोनों वर्गों "a" और "b" शामिल चयन करता है।

यह आवश्यक है, तो है कि div चयनित किसी भी class विशेषता वास्तव में (केवल) इन दो वर्गों और कोई अन्य वर्गों में शामिल है, का उपयोग करें:

div[contains(concat(' ', @class, ' '), ' a ') 
    and 
    contains(concat(' ', @class, ' '), ' b ') 
    and 
    string-length(normalize-space(@class)) = 3 
    ] 
संबंधित मुद्दे