我有 2 个可能的 div。
<div class='a b'></div>
和
<div class='c d'></div>
有没有办法检查 div 元素是否有 2 个类 a 和 b?
我使用 Ruby、Capybara 和 XPath 来选择元素,但如果 css 可以解决问题,它就很好。
这个 css 选择器应该在 capybara 中工作:
page.has_css?('div.a.b')
这将匹配
<div class="a b">
但不是<div class="a">
你可以这样做 :
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"
。
如果要求class
任何选定的属性div
完全(仅)包含这两个类而不包含其他类,请使用:
div[contains(concat(' ', @class, ' '), ' a ')
and
contains(concat(' ', @class, ' '), ' b ')
and
string-length(normalize-space(@class)) = 3
]