ChatGPT解决这个技术问题 Extra ChatGPT

Capybara: How do I fill in a input field by its ID

I have this:

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

How do I fill in a that field by its ID?


n
ndnenkov

fill_in accepts the id as first parameter:

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

I thought so, but It is not working. It seems that it doesn't fill it. It doesn't give any errors about not finding it. It just doesn't fill it.
Maybe you can include the capybara code in question and any other related code.
I discovered that the problem where in Mongoid. Release candidates bugs.
@Nerian ah! glad you figured it out
have we got the solution?
u
user2322409

You can also do it with:

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

S
Strangegroove

fill_in accepts id without the # symbol which I found confusing at first. Also note that if your input field is in a modal, you may need to wait for the transition or fade in before the field can be filled in.


m
moeabdol

If you're using simple_form gem then you must note that it does automatically id your form elements, hence manually id-ing elements yourself is futile!

There is; however, a naming convention that simple_form follows to id form elements.

object_attribute

So if you're filling-in information for let's say a contact object as follows:

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

simple_form will then automatically generate ids to each form element respectively as so:

id="contact_first_name"
id="contact_last_name"

Now you can simply make use of this naming convention to fulfill all your fill_in needs. Hope this helps.