检查元素是否有两个类

时间:2012-07-31 17:08:29

标签: ruby xpath capybara

我有两个可能的div。

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

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

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

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

3 个答案:

答案 0 :(得分:7)

这个css选择器应该在capybara中运行:

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

将匹配

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

答案 1 :(得分:5)

你可以这样做:

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

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

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

答案 2 :(得分:2)

XPath解决方案

使用

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

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

如果要求所有选定class的{​​{1}}属性完全(仅)包含这两个类而不包含其他类,请使用

div