2012-07-31 39 views
7

Tôi có 2 div có thể.Kiểm tra xem phần tử có hai lớp không

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

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

Có cách nào để kiểm tra xem div phần tử có 2 lớp a và b?

Tôi sử dụng Ruby, Capybara và XPath để chọn phần tử nhưng css là tốt nếu nó có thể giải quyết được sự cố.

Trả lời

6

selector css này nên làm việc trong Capybara:

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

mà sẽ khớp với

<div class="a b"> nhưng không <div class="a">

+0

Điều đó có hiệu quả. Nó có thể được thực hiện với XPath? –

+1

có nhưng xấu hơn. http://stackoverflow.com/questions/3881044/how-to-get-html-elements-with-multiple-css-classes – AJcodez

5

Bạn có thể làm điều này:

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

Nếu bạn không sử dụng rspec, nó này:

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

Điều này đòi hỏi RSpec, phải không? –

+1

Có. Bạn có thể sử dụng 'page.has_css? ('Div.a.b')' nếu bạn không muốn RSpec. – Dougui

2

giải pháp XPath:

Sử dụng:

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

này sẽ chọn bất kỳ div con của nút bối cảnh, mà class thuộc tính chứa cả các lớp "a""b".

Nếu nó là cần thiết rằng class thuộc tính của bất kỳ chọn div chứa chính xác (chỉ) hai loại cổ phiếu này và không có các lớp khác, sử dụng:

div[contains(concat(' ', @class, ' '), ' a ') 
    and 
    contains(concat(' ', @class, ' '), ' b ') 
    and 
    string-length(normalize-space(@class)) = 3 
    ] 
Các vấn đề liên quan