Капибара: Как мне заполнить поле ввода по его идентификатору - PullRequest
83 голосов
/ 21 января 2011

У меня есть это:

<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> 

Как мне заполнить это поле по его идентификатору?

Ответы [ 4 ]

115 голосов
/ 21 января 2011

fill_in принимает идентификатор в качестве первого параметра:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'
29 голосов
/ 30 июня 2014

Вы также можете сделать это с:

find('Id or class here').set('some text')
6 голосов
/ 18 ноября 2015

fill_in принимает идентификатор без символа #, что сначала показалось мне непонятным.Также обратите внимание, что если ваше поле ввода модальное, вам может потребоваться дождаться перехода или исчезнуть, прежде чем поле можно будет заполнить.

3 голосов
/ 18 августа 2015

Если вы используете 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="contact_first_name"
id="contact_last_name"

Теперь вы можете просто использовать это соглашение об именах для выполнения всех ваших потребностей fill_in. Надеюсь, это поможет.

...