2010-03-22 78 views
2

我需要使用黃瓜測試自動填充字段。我怎樣才能做到這一點?我試圖使用黃瓜測試導軌的自動完成功能

Scenario: Using Autocomplete 
    Given I am on the home page 
    And there are the following users: 
    |id |name | 
    |1 |foo | 
    When I fill in "name" with "f" 
    Then I should see "foo" 

但隨後由於預期以下元素的內容,包括「foo」的失敗。 有什麼建議嗎?

回答

0

自動完成使用Javascript來設置文本字段的值(在您的案例中的「名稱」)。由於Cucumber使用Webrat檢查服務器返回的響應,並且Webrat不支持Javascript,所以您的場景失敗。

黃瓜可以使用Selenium來自動化Javascript測試,並確認期望值正在插入。更多信息here

5

您需要爲測試使用支持JS的驅動程序。如果你正在使用webrat o水豚,你可以嘗試使用硒。

Then I should see "foo" 

這不能使用默認的網頁步驟,因爲在查找文本時DOM尚未更新。有2個選項:

方法1:等待

And I wait for 1 second 
Then I should see "foo" 

您需要實現這一步調用sleep(N)

選項2:自定義查找

水豚的locate方法將查看目標是否存在於DOM中。如果沒有,它會等待幾秒鐘,然後再試一次,如果它仍然不存在,就會拋出一個錯誤。

Then I should see the following autocomplete options: 
| foo | 

這是執行的步驟的樣子對我來說:

Then /^I should see the following autocomplete options:$/ do |table| 
    table.raw.each do |row| 
    locate(:xpath, "//a[text()='#{row[0]}']") 
    end 
end 

如果您需要對這個問題我已經寫有例子和一些片段一博文更詳細的信息,也處理點擊提交的自動完成選項:

http://www.aentos.com/blog/testing-ajax-autocomplete-fields-cucumber-and-capybara