2012-07-31 114 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 
    ]