Capybara:如何通过ID填写输入字段

时间:2011-01-21 00:18:08

标签: rspec capybara

我有这个:

<input class="string optional" 
    id="course_group_courses_attributes_2_name" 
    name="course_group[courses_attributes][2][name]" 
    placeholder="Lengua" 
    size="15" 
    type="text" />
</div> 

如何按ID填写该字段?

4 个答案:

答案 0 :(得分:115)

fill_in接受id作为第一个参数:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'

答案 1 :(得分:29)

你也可以这样做:

find('Id or class here').set('some text')

答案 2 :(得分:6)

fill_in接受没有#符号的id,我发现这个符号最初很混乱。另请注意,如果您的输入字段位于模态中,则可能需要等待转换或淡入才能填写字段。

答案 3 :(得分:3)

如果您正在使用 simple_form gem,那么您必须注意它会自动识别您的表单元素,因此手动识别元素本身是徒劳的!

有;但是,simple_form遵循id表单元素的命名约定。

object_attribute

因此,如果您正在填写信息,请按照以下说明联系对象:

= simple_form_for @contact do |f|
  = f.input :first_name
  = f.input :last_name
然后,

simple_form将自动为每个表单元素生成id,如下所示:

id="contact_first_name"
id="contact_last_name"

现在,您只需使用此命名约定即可满足所有fill_in需求。希望这会有所帮助。