2013-05-13 27 views
5

Tôi đang viết một số thử nghiệm tính năng bằng Capybara, cho các trang liên quan đến nhiều lần làm mới javascript (url sẽ giữ nguyên khi người dùng nhấp vào "tiếp tục" nút, nhưng nội dung ẩn sẽ được hiển thị và nội dung hiển thị sẽ bị ẩn, do đó có số lượng văn bản/bộ chọn lớn/v.v. tại bất kỳ điểm nào "trên" trang nhưng bị ẩn khỏi người dùng).Không thể điền vào bất kỳ phần tử ẩn nào trong Capybara khi ignore_hidden_elements là đúng

Để kiểm tra chức năng này, tôi muốn tùy chọn cấu hình ignore_hidden_elements của Capybara là đúng, vì điều đó thể hiện tốt nhất trải nghiệm người dùng. Tuy nhiên, cũng có một số plugin jQuery trên trang sử dụng đồ họa ưa thích để điền vào các phần tử HTML cơ bản bị ẩn và tôi muốn sử dụng Capybara để chỉ chọn đúng giá trị cho những yếu tố đó, thay vì cố gắng sử dụng Javascript để mô phỏng thủ công người dùng tương tác với phần tử.

Cụ thể, tôi đang cố gắng kiểm tra các hộp chọn được đặt để hiển thị: không có và được lấp đầy bởi một plugin jQuery khi người dùng tương tác với họ. Tôi rất muốn có thể thực hiện việc này:

select('value', from: 'select_box') 

nhưng hộp chọn bị ẩn.

Vì vậy, tôi cố gắng này:

select('value', from: 'select_box', visible: false) 

nhưng điều đó không làm việc, hoặc. Tôi không thích để biến ignore_hidden_elements thành false, vì mô phỏng kém hơn người dùng và tôi phải quay lại và thêm "visible: true" vào nhiều dòng thử nghiệm.

Bất kỳ ý tưởng nào về cách thực hiện việc này? Có một tùy chọn để hủy bỏ gọn gàng hơn ignore_hidden_elements không?

EDIT - Sau phản ứng của Andrey, tôi quay ignore_hidden_elements false, và sau đó đã các Capybara cùng chọn thử nghiệm như trước đây:

select 'value', from: 'select_box_id' 

và, giống như ma thuật, nó làm việc. Khi tôi lần nữa thay đổi ignore_hidden_elements true và thử dòng này:

select 'value', from: 'select_box_id', visible: false 

tôi nhận được lỗi này:

Failure/Error: select 'value', from: 'select_box_id', visible: false 
    Capybara::ElementNotFound: 
     Unable to find select box "select_box_id" 

Bất kỳ cơ hội này không phải là một lỗi? Tôi có nên báo cáo không?

+0

Nếu 'select ('value', from: 'select_box', visible: false)' không hoạt động hơn 'select ('value', from: 'select_box')' with 'Capybara.ignore_hidden_elements = false' cũng không hoạt động. Nếu nó hoạt động, nó sẽ được coi là một lỗi ở Capybara. 'ignore_hidden_elements' và' visible' tùy chọn ảnh hưởng đến cùng một tham số –

+0

Sau đó, tôi nghĩ rằng đây là một lỗi. Chi tiết ở trên. – Sasha

+0

Phiên bản Capybara của bạn là gì? –

Trả lời

1

Đó là lỗi trong Capybara 2.0.x. Here is a test case có thể tái sản xuất được trong phiên bản 2.0.x nhưng không phải trong 2.1.

Nhưng những người bảo trì Capybara-Webkit vẫn chưa phát hành phiên bản tương thích với Capybara 2.1.

giải pháp có thể cho bạn:

  • sử dụng Capybara 2.Trình điều khiển 1 tương thích
  • sử dụng Capybara-Webkit từ nhánh chính trên github
  • không cố gắng tương tác với các phần tử vô hình (nó không hoạt động trong Selenium), vì vậy tôi tin rằng khả năng tương tác nên được xem là lỗi trong Capybara- Webkit)
Các vấn đề liên quan