8

我有 2 个可能的 div。

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

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

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

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

4

3 回答 3

7

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

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

这将匹配

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

于 2012-07-31T17:55:26.187 回答
5

你可以这样做 :

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

如果你不使用 rspec,它是这样的:

page.has_css?('div.a.b')
于 2012-07-31T17:54:18.727 回答
2

XPath 解决方案

使用

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

这将选择div上下文节点的任何子节点,其class属性包含类"a""b"

如果要求class任何选定的属性div完全(仅)包含这两个类而不包含其他类,请使用

div[contains(concat(' ', @class, ' '), ' a ')
  and
    contains(concat(' ', @class, ' '), ' b ')
  and
    string-length(normalize-space(@class)) = 3
   ]
于 2012-08-01T05:08:05.730 回答