2012-07-31 209 views
7

我有2個可能的div。檢查元素是否有兩個類

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

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

有沒有一種方法來檢查,如果div元素有2類A和B?

我使用Ruby,水豚和XPath選擇元素,但如果可以解決問題,css是很好的。

回答

6

這個CSS選擇器應在水豚工作:

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

這將匹配

<div class="a b">但不<div class="a">

+0

這是有效的。它可以用XPath完成嗎? – 2012-07-31 19:22:53

+1

是的,但它的醜陋。 http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez 2012-07-31 19:36:19

5

你可以這樣做:

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

如果你不使用RSpec的,那就是:

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

這需要Rspec的,不是嗎? – 2012-07-31 19:22:14

+1

是的。如果你不想要RSpec,你可以使用'page.has_css?('div.a.b')'。 – Dougui 2012-07-31 19:28:12

2

XPath的解決方案

使用

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

這將選擇任何div子上下文節點,其class屬性包含兩個類"a""b"

如果要求選擇divclass屬性的任何恰好包含(只)這兩個類並沒有其他類,使用

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