ChatGPT解决这个技术问题 Extra ChatGPT

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

我有这个:

<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 填写该字段?


n
ndnenkov

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

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

我是这么想的,但它不起作用。好像没有填满。它不会给出任何关于找不到它的错误。它只是没有填满它。
也许您可以包含有问题的水豚代码和任何其他相关代码。
我发现问题出在 Mongoid 中。发布候选错误。
@Nerian 啊!恭喜你弄明白了
我们有解决办法吗?
u
user2322409

你也可以这样做:

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

S
Strangegroove

fill_in 接受不带 # 符号的 id,这让我一开始感到困惑。另请注意,如果您的输入字段处于模式中,您可能需要等待过渡或淡入才能填写该字段。


m
moeabdol

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

有;然而,simple_form 遵循的命名约定来标识表单元素。

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 需求。希望这可以帮助。