最近我发现使用'find
'的水豚找到的元素可能无法与'fill_in
'一起使用(参阅:Capybara can find but not fill_in)
所以fill_in和find使用的params是不同的。因此,我可以使用set
填写我使用“find
”找到的表单字段。
还有其他区别吗?
答案 0 :(得分:2)
就实际输入字段而言,set
和fill_in
完全相同。
fill_in
的方法定义是:
def fill_in(locator, options={})
raise "Must pass a hash containing 'with'" if not options.is_a?(Hash) or not options.has_key?(:with)
with = options.delete(:with)
fill_options = options.delete(:fill_options)
find(:fillable_field, locator, options).set(with, fill_options)
end
正如您在最后一行所看到的,fill_in
方法正在做同样的事情 - 即使用find
获取节点,然后使用set
输入它。