您需要爲測試使用支持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