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> 

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

Ответ 1

fill_in принимает идентификатор как первый параметр:

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

Ответ 2

Вы также можете сделать это с помощью

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

Ответ 3

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

Ответ 4

Если вы используете simple_form gem, тогда вы должны заметить, что он автоматически идентифицирует ваши элементы формы, поэтому сами вручную элементы id бесполезны!

Есть; однако, соглашение об именах, которое 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. Надеюсь, это поможет.