我有2个可能的div。检查元素是否有两个类
<div class='a b'></div>
和
<div class='c d'></div>
有没有一种方法来检查,如果div元素有2类A和B?
我使用Ruby,水豚和XPath选择元素,但如果可以解决问题,css是很好的。
我有2个可能的div。检查元素是否有两个类
<div class='a b'></div>
和
<div class='c d'></div>
有没有一种方法来检查,如果div元素有2类A和B?
我使用Ruby,水豚和XPath选择元素,但如果可以解决问题,css是很好的。
这个CSS选择器应在水豚工作:
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')
这需要Rspec的,不是吗? – 2012-07-31 19:22:14
是的。如果你不想要RSpec,你可以使用'page.has_css?('div.a.b')'。 – Dougui 2012-07-31 19:28:12
XPath的解决方案:
使用:
div[contains(concat(' ', @class, ' '), ' a ')
and
contains(concat(' ', @class, ' '), ' b ')
]
这将选择任何div
子上下文节点,其class
属性包含两个类"a"
和"b"
。
如果要求选择div
的class
属性的任何恰好包含(只)这两个类并没有其他类,使用:
div[contains(concat(' ', @class, ' '), ' a ')
and
contains(concat(' ', @class, ' '), ' b ')
and
string-length(normalize-space(@class)) = 3
]
这是有效的。它可以用XPath完成吗? – 2012-07-31 19:22:53
是的,但它的丑陋。 http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez 2012-07-31 19:36:19