您需要为测试使用支持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