我有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