2012-07-31 12 views
7

2つのdivがあります。要素に2つのクラスがあるかどうかをチェック

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

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

のdiv要素は2つのクラスAとBとを持っているかどうかを確認する方法はありますか?

私は要素を選択するためにRuby、Capybara、XPathを使用しますが、問題を解決できるのであればCSSは問題ありません。

答えて

6

このCSSセレクタがカピバラに動作するはずです:

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

あなたがこれを行うことができます:あなたはRSpecの使用していない場合は

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

を、それはこのです:

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

これはRSpecのを必要とし、それはないですか? –

+1

はい。 RSpecが必要ない場合は 'page.has_css?( 'div.a.b')'を使うことができます。 – Dougui

2

XPathのソリューション

使用

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

これはclass属性クラス"a""b"の両方が含まれているコンテキストノードのいずれかdiv子を選択します。それが必要な場合は

は、任意の選択divclass属性がを使用し、正確に(のみ)この2つのクラスとなし、他のクラスが含まれていること:

div[contains(concat(' ', @class, ' '), ' a ') 
    and 
    contains(concat(' ', @class, ' '), ' b ') 
    and 
    string-length(normalize-space(@class)) = 3 
    ] 
関連する問題