Как использовать fill_in с find в Capybara (если это возможно) - PullRequest
89 голосов
/ 16 декабря 2011

Я хотел бы сделать следующее, но не могу из-за характера fill_in, ожидающего локатор в качестве первого аргумента.

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

Я также пытался сделать

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

но нет методов, которые возвращали бы какие-либо данные для идентификации элемента в fill_in.

Есть идеи о том, как найти поле с помощью регулярного выражения для заполнения с fill_in?

Ответы [ 5 ]

154 голосов
/ 17 декабря 2011

Исходя из памяти, возможно, не на 100% правильно, но я думаю, что если у вас есть ссылка на сам элемент, вы бы использовали set вместо fill_in:

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

Однаковаш конкретный пример, fill_in должен быть в состоянии найти элемент, поскольку вы знаете, что это ID:

fill_in 'donation_pledge_hundreds', with: "10"
5 голосов
/ 11 сентября 2015

Вместо метода вы можете использовать скобки для возврата :name или :id, например element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" Тот же подход можно использовать с select - select my_type, from: find('select[name$="[type]"]')[:name]

3 голосов
/ 17 июня 2014
find("input[id$='donation_pledge_hundreds']").set "10"

Стоит отметить, что вы можете связать свои находки в цепочку.

@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"
1 голос
/ 25 мая 2019
element = find(:css, "input[id$='donation_pledge_hundreds']")   
element.fill_in with: "10"
0 голосов
/ 11 февраля 2016
fill_in <$id>, :with => 'text you want to fill in'
...