如何在Capybara中使用fill_in和find(如果可能的话)

时间:2011-12-16 12:46:57

标签: find 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一起使用的最佳方法的任何想法?

5 个答案:

答案 0 :(得分:153)

从内存中去,所以可能不是100%正确,但我认为如果你有一个元素本身的引用你会使用set而不是fill_in

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

但是对于您的具体示例,fill_in应该能够找到该元素,因为您知道它的ID:

fill_in 'donation_pledge_hundreds', with: "10"

答案 1 :(得分:5)

您可以使用括号返回: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]

答案 2 :(得分:3)

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

值得注意的是,你可以链接你的发现。

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

fill_in <$id>, :with => 'text you want to fill in'