2013-08-12 31 views
5

Tìm cách tốt nhất để xác định xem một phần tử có thực sự trống không.Yếu tố xác nhận Capybara trống

<table id="foo"> 
    <tr> 
    <td>Cell One</td> 
    <td></td> 
    </tr> 
</table> 

Nhưng cả hai trở true:

find("#foo td:nth-child(1)").should have_content('') 
find("#foo td:nth-child(2)").should have_content('') 

Vì vậy, tôi đã sử dụng này:

find("#foo td:nth-child(1)").text.should == 'Cell One' 
find("#foo td:nth-child(2)").text.should == '' 

Mà dường như để làm việc, nhưng không kiểm tra để xem nếu phần tử có thể chứa các yếu tố khác. Ví dụ: nó có thể chứa hình ảnh, liên kết hoặc khoảng thời gian.

Tôi có thể kiểm tra từng ảnh riêng lẻ (hình ảnh, liên kết hoặc khoảng thời gian), nhưng có vẻ như có cách nào tốt hơn.

Có cách nào để kiểm tra xem phần tử có trống không?

+0

Đối với nhu cầu của bạn, là sau trống rỗng? '' –

+0

Đó là một câu hỏi hay, nhưng tôi sẽ nói không. –

+0

Đơn giản nhất có thể là chỉ kiểm tra xem thuộc tính innerHTML của nó là '" "' hay không, bạn cũng có thể kiểm tra '.children.length === 0' nhưng không thành công cho ví dụ trên –

Trả lời

5

Bạn có thể làm như sau để kiểm tra xem phần tử không có bất kỳ văn bản và không có yếu tố con (tức là thực sự trống):

# Has no child elements 
find("#foo td:nth-child(2)").all('*').length.should == 0 

# Has no text 
find("#foo td:nth-child(2)").text.should=='' 
Các vấn đề liên quan