使用rspec和capybara单击链接不会加载页面

时间:2012-09-11 03:08:03

标签: ruby-on-rails-3 testing rspec click capybara

在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。

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

1 个答案:

答案 0 :(得分:1)

请试试这个:

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

然后使用 page.find(“#menu_agents”)。点击而不是 page.find_by_id('menu_agents')。点击

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

注意:确保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