2011-04-15 69 views
2

我开始用黄瓜和我运行这个简单的场景:如何在黄瓜中找到'我填写'步骤找到一个没有定义标签的字段?

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)

但是它找到它,如果我添加了标签。我发现它有点怀疑它不能与我给出的名称与适当的文本字段相匹配。

出了什么问题?

谢谢

回答

2

你的文本字段的名称默认为:

project[name] 

实际上,它遵循如下规则:

object[field] 

你应该看看你的DOM和检查。

编辑:

物权仅供参考,这很奇怪看到:的

<% form_for (@project) do |f| %> 

代替:

<%= form_for (@project) do |f| %> 
+0

它真的在那里! – 2011-04-15 14:17:33

+0

我不明白你的意见:) – apneadiving 2011-04-15 14:23:06

+0

对不起。我说我检查了DOM并且项目[name]在那里! – 2011-04-15 14:32:40

5

试着改变你的黄瓜功能如下:

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或名称属性。随着apneadiving的提及,您可以通过查看生成文件的来源来检查这些值。你会看到类似这样的:

<input id="project_name" name="project[name]" type="text"> 
+0

嗯它仍然没有找到它:/ – 2011-04-15 15:01:16

+0

这应该也工作过,+1 :) – apneadiving 2011-04-15 16:56:32

0

我有同样的问题,我通过简单地改变

<% form_for ... %> 

<%= for_for ... %> 

添加的“=”使得固定它显示表单字段,允许Capybara正确识别它。

相关问题