Как использовать fill_in с поиском в Capybara (если возможно)
Я хотел бы сделать следующее, но не могу из-за характера 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?
Ответы
Ответ 1
Переход из памяти может быть не на 100% правильным, но я думаю, что если у вас есть ссылка на сам элемент, вы бы использовали set
вместо fill_in
:
find(:css, "input[id$='donation_pledge_hundreds']").set("10")
Однако для вашего конкретного примера fill_in
должен иметь возможность найти элемент, как вы знаете его ID:
fill_in 'donation_pledge_hundreds', with: "10"
Ответ 2
Вместо метода вы можете использовать скобки для возврата :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
find("input[id$='donation_pledge_hundreds']").set "10"
Стоит отметить, что вы можете связать свои находки.
@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"
Ответ 4
fill_in <$id>, :with => 'text you want to fill in'
Ответ 5
element = find(:css, "input[id$='donation_pledge_hundreds']")
element.fill_in with: "10"