[Rspec / Capybara]如何在按访问方式加载页面内容时检测页面内容

时间:2014-06-02 09:57:51

标签: ruby-on-rails ruby rspec capybara automated-tests

我对Rspec / Capybara很新。

我想测试在访问方法完全加载页面之前,我可以在页面中加载主要内容的速度。

如果我这样做

starts = Time.now
visit "/"
pp Time.now - starts ******(this will start after visit "/" fully loaded)
test_time = Time.now - starts
test_time.should < 10

控制台中的输出为10.xxxx(10秒),因为它在完成加载主页后完成了pp方法(完全加载页面中的所有内容)。

无论如何我可以做这样的事情吗?

starts = Time.now
visit "/" do (visit and do something while it is loading)
  break if page.has_content("Main content appeared now !!") (Detect if the page has content "Main content appeared now !!" then break and stop loading page
end
pp Time.now - starts
test_time = Time.now - starts
test_time.should < 10

,结果将类似于2.12342(因为我们停止访问时检测到内容时停止加载

或者在加载页面时我可以检测内容的任何其他方式。

2 个答案:

答案 0 :(得分:0)

我认为你不能用水豚做到这一点。尝试使用Selenium-Webdriver,尽管Selenium不会等到页面完全加载。

driver = Selenium::WebDriver.for :chrome
driver.navigate.to url
while driver.find_elements(:id, 'element_id').size > 0
    sleep 0.1
end
test_time = Time.now - starts
p "#{test_time} seconds"
driver.quit
expect(test_time).to be < 10

答案 1 :(得分:0)

您也可以使用水豚

#spec_helpers.rb

Capybara.default_driver = :selenium Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome) end