2011-04-15 22 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正確識別它。