2011-12-16 35 views
80

Tôi muốn làm như sau nhưng không thể do bản chất của fill_in mong đợi một định vị là đối số đầu tiên.Làm thế nào để sử dụng fill_in với tìm thấy trong Capybara (nếu có thể)

find(:css, "input[id$='donation_pledge_hundreds']").fill_in :with => "10" 

Tôi cũng đã cố gắng làm

element = find(:css, "input[id$='donation_pledge_hundreds']") 
fill_in element.<method> , :with => "10" 

nhưng không có phương pháp mà trả lại bất kỳ dữ liệu để xác định yếu tố để FILL_IN.

Bất kỳ ý tưởng nào về cách tốt nhất để tìm trường thông qua regex để sử dụng với fill_in?

Trả lời

136

Đi từ bộ nhớ để có thể không chính xác 100%, nhưng tôi nghĩ nếu bạn có một tham chiếu đến các yếu tố bản thân bạn muốn sử dụng set thay vì fill_in:

find(:css, "input[id$='donation_pledge_hundreds']").set("10") 

Tuy nhiên ví dụ cụ thể của bạn, fill_in nên có thể tìm thấy phần tử như bạn biết đó là ID:

fill_in 'donation_pledge_hundreds', with: "10" 
+0

Good man, Đó là một trong những. Trường cụ thể đó được sử dụng trong các ngữ cảnh khác nhau (được xác thực/không được xác thực) và do đó có một id trường khác. donation_pledge_hundreds là phần phổ biến của id trường do đó so sánh phần cuối của tên trường $ = – ants

+7

Hãy cẩn thận khi sử dụng 'set' thay vì các phương thức tích hợp khác vì nó không kích hoạt sự kiện sau khi thay đổi giá trị. –

+14

Giao diện rất khó hiểu ... Phần tử # fill_in cho phần tử chỉ cần điền vào ... –

3
find("input[id$='donation_pledge_hundreds']").set "10" 

nó đáng chú ý là bạn có thể phát hiện dây chuyền của bạn.

@modal = find(".modal") 
@modal.find('input[name=foo]').set "bar" 
5

Thay vì một phương pháp, bạn có thể sử dụng dấu ngoặc để trở :name hoặc :id, ví dụ element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" Cách tiếp cận tương tự có thể được sử dụng với select - select my_type, from: find('select[name$="[type]"]')[:name]

0
fill_in <$id>, :with => 'text you want to fill in' 
Các vấn đề liên quan