2013-01-01 30 views
8

Sử dụng capybara, có cách nào để có được tất cả các lớp css của một phần tử không? Nhìn vào tài liệu, tôi không thấy bất kỳ cách dễ dàng để làm điều này.Nhận tất cả các lớp của một phần tử trong capybara?

Ngoài ra, cho một phần tử, elem và một lớp css, someclass, nên elem.has_css?('.someclass') tương đương với jquery $(elem).hasClass('someclass')?

Thử nghiệm cụ thể này đang sử dụng Selenium, vì nó liên quan đến javascript.

Trả lời

12

Element#[] trông khá dễ dàng với tôi:

find('div')[:class] 

Ngoài ra, với một phần tử, elem, và một lớp css, SomeClass, nên elem.has_css (' SomeClass.) Tương đương với? jquery $ (elem) .hasClass ('someclass')?

Element#has_css? kiểm tra các phần tử có bộ chọn CSS được chỉ định trong phần tử mà phương thức được gọi. Jquery's hasClass kiểm tra xem một phần tử có lớp đã chỉ định hay không.

Cập nhật:Capybara matchers tìm phần tử/văn bản trong phần tử hiện tại. Element#has_css? kiểm tra xem một phần tử có chứa phần tử có bộ chọn css được chỉ định trong đó hay không. Nếu bạn muốn kiểm tra xem phần tử có tồn tại hay không, hãy sử dụng page.has_css?. Có thể các đối sánh trong biểu mẫu expect(page).to have_css('div') sẽ tốt hơn cho bạn.

+1

Điều đó phù hợp với việc tham gia các lớp học. Tôi có một tình huống mà elem [: class] trả về "someclass lớp khác", nhưng elem.has_css? ('. Someclass') trả về false. Điều này có nghĩa không? – mushroom

+1

@mushroom Tôi đã cập nhật câu trả lời –

+1

Bạn có thể chỉ ra vị trí trong README mà nó nói rằng "Element # has_css kiểm tra xem Element có chứa phần tử có bộ chọn css được chỉ định trong đó" không? Ngoài ra, nếu has_css? cư xử theo cách bạn nói nó, sau đó tôi không nghĩ rằng kết quả của mã jquery và mã ruby ​​trong câu hỏi của tôi nhất thiết sẽ giống nhau. – mushroom

Các vấn đề liên quan