Câu hỏi Kiểm tra xem phần tử có hai lớp hay không


Tôi có 2 divs có thể.

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

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

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

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


8
2017-07-31 17:08


gốc




Các câu trả lời:


Bộ chọn css này sẽ hoạt động trong capybara:

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

sẽ khớp với

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


7
2017-07-31 17:55



Điều đó hoạt động. Nó có thể được thực hiện với XPath? - Иван Бишевац
có nhưng xấu hơn của nó. stackoverflow.com/questions/3881044/… - AJcodez


Bạn có thể làm được việc này :

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

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

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

5
2017-07-31 17:54



Điều này đòi hỏi Rspec, phải không? - Иван Бишевац
Vâng. Bạn có thể dùng page.has_css?('div.a.b') nếu bạn không muốn RSpec. - Dougui


Giải pháp XPath:

Sử dụng:

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

Điều này chọn bất kỳ div con của nút ngữ cảnh, có class thuộc tính chứa cả hai lớp "a" và "b".

Nếu được yêu cầu thì class thuộc tính của bất kỳ lựa chọn nào div chứa chính xác (chỉ) hai lớp này và không có lớp nào khác, sử dụng:

div[contains(concat(' ', @class, ' '), ' a ')
  and
    contains(concat(' ', @class, ' '), ' b ')
  and
    string-length(normalize-space(@class)) = 3
   ]

2
2017-08-01 05:08