检查元素是否有两个类

我有2个可能的div。

 

有没有办法检查div元素是否有2个类a和b?

我使用Ruby,Capybara和XPath来选择元素,但如果可以解决问题,则css很好。

这个css选择器应该在capybara中工作:

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

哪个会匹配

但不是

你可以这样做 :

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

如果你不使用rspec,那就是:

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

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 ]