如何使Cucumber中的“我填写”步骤找到没有定义标签的字段?

| 我从黄瓜开始,正在运行这个简单的场景:
Scenario: Creating a project
  Given I go to the new project page
  And I fill in \"Name\"  with \"xxx\"
  ...
新的项目表单已经到位,如下所示:
<% form_for (@project) do |f| %>
  <%= f.text_field :name %>
  ...
<% end %>
如您所见,我尚未定义标签(不需要标签)。问题是黄瓜找不到该字段:   鉴于我转到新项目页面       然后在“名称”中填写“我需要一些东西”#   功能/step_definitions/web_steps.rb:68         无法填写,没有带有ID的文本字段,文本区域或密码字段,   名称或找到标签“名称”   (水豚:: ElementNotFound) 但是,如果我添加标签,它将找到它。我发现它与我在适当的文本字段中输入的名称不匹配,这有点令人怀疑。 怎么了? 谢谢     
已邀请:
默认情况下,您的文本字段名称为:
project[name] 
实际上,它遵循以下规则:
object[field]
您应该查看自己的dom并进行检查。 编辑: Jus FYI,很奇怪地看到:
<% form_for (@project) do |f| %>
代替:
<%= form_for (@project) do |f| %>
    
尝试将您的黄瓜功能更改为:
Scenario: Creating a project
  Given I go to the new project page
  And I fill in \"project_name\" with \"xxx\"
要么...
Scenario: Creating a project
  Given I go to the new project page
  And I fill in \"project[name]\" with \"xxx\"
失败的原因是,如果没有标签,则水豚(黄瓜使用的)会搜索该字段的ID或名称属性。如呼吸暂停所述,您可以通过查看生成文件的源来检查这些值。您会看到类似以下内容:
<input id=\"project_name\" name=\"project[name]\" type=\"text\">
    
我遇到了同样的问题,只需更改即可解决
<% form_for ... %>
<%= for_for ... %>
添加\'= \'可以显示表单字段,这使Capybara可以正确识别它。     

要回复问题请先登录注册