我对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(因为我们停止访问时检测到内容时停止加载
或者在加载页面时我可以检测内容的任何其他方式。
答案 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