-2

在 Rails 3.2 中,我使用的是 rspec (2.11.0) 和 capybara 1.1.2(并且没有安装 webrat),当我单击网页上的链接时,它会做一些奇怪的事情。

我正在尝试单击主页上的链接以转到另一个页面。下面是基本的 rspec 测试。

it "should go to agents page" do
  visit 'home'

  #puts page.body
  #links = page.all('a')
  #links.each do |l|
  #  puts l.text
  #end

  page.find_by_id('menu_agents').click

  puts page.body
  #<various content asserts on page currently commented out>
end

我基本上去一个页面,抓住一个链接然后点击

链接存在。正如您从注释掉的语句中看到的那样,我通过查看控制台中的页面并查看链接列表来确认。我不仅尝试使用上面的链接单击,还尝试使用click_link和引用 id。当我运行代码时查看代码和页面的 html,我看到了元素的 id。

在所有情况下,我都会得到以下结果:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

通过单击链接运行软件时,rails s确实会加载正确的页面。同样,当我在测试中访问主页时,它也会正确加载,因为当我将正文打印到控制台时,我会看到正确的 html。

当我单击链接并且页面加载出现某种类型的失败时,页面加载似乎出现问题(尽管测试本身没有失败)。有任何想法吗?

4

1 回答 1

1

请试试这个:

页面加载需要一些时间。使用睡眠功能。它需要一些时间等待。

然后使用page.find("#menu_agents").click代替page.find_by_id('menu_agents').click

验证 menu_agents id 名称不存在于结果页面中的任何其他位置。

注意:确保 menu_agents id 是唯一的。

it "should go to agents page" do

  visit 'home'

  sleep 5

  page.find("#menu_agents").click

  puts page.body
  #<various content asserts on page currently commented out

end
于 2012-12-05T05:50:29.307 回答