Ruby 如果测试结束得太快,则保存和显示页面不会显示页面

Ruby 如果测试结束得太快,则保存和显示页面不会显示页面,ruby,phantomjs,capybara,poltergeist,Ruby,Phantomjs,Capybara,Poltergeist,,一个Ruby的web测试库,有一个在浏览器中打开当前网页的方法。这似乎是异步工作的——在发出调用后的一段时间内显示网页。这很好,但是如果调用#save_和#show_页面后测试结束得太快,则不会显示任何网页 问题代码 鉴于此文件: source "https://rubygems.org" gem "launchy" gem "poltergeist" 则此代码不显示网页: require "capybara/poltergeist" session = Capybara::Session.

,一个Ruby的web测试库,有一个在浏览器中打开当前网页的方法。这似乎是异步工作的——在发出调用后的一段时间内显示网页。这很好,但是如果调用#save_和#show_页面后测试结束得太快,则不会显示任何网页

问题代码 鉴于此文件:

source "https://rubygems.org"
gem "launchy"
gem "poltergeist"
则此代码不显示网页:

require "capybara/poltergeist"
session = Capybara::Session.new(:poltergeist)
session.visit("http://www.google.com")
session.save_and_open_page
变通办法 在代码末尾添加一个简短的睡眠会根据需要显示网页:

require "capybara/poltergeist"
session = Capybara::Session.new(:poltergeist)
session.visit("http://www.google.com")
session.save_and_open_page
sleep 1
# => Opening "/home/wayne/homesmart/franchise-manager-qa/capybara-201610141504469160970532.html" with Google Chrome  (text/html)
# => [10253:10281:1014/150446:ERROR:nss_util.cc(809)] After loading Root Certs, loaded==false: NSS error code: -8018
# => Created new window in existing browser session.
如何使Capybara的#save_和#open_page方法始终显示页面,而不必在调用该方法后插入睡眠?

版本
  • Ruby 2.3.1p112
  • 2.10.1
  • 2.4.3
  • 1.11.10
  • 2.1.1
  • 谷歌浏览器53.0.2785.143(64位)
  • Linux 3.16.0-4-amd64#1 SMP Debian

我无法使用您提供的代码在MacOS上复制这一点,因此这可能是launchy gem的平台特定问题。只是想确认你没有一个会删除所有保存页面的后套件挂钩,是吗?@Tom谢谢你看这个。我没有after suite钩子——标题为“问题代码”的代码是我所需要的所有代码。我无法使用您提供的代码在MacOS上复制此代码,因此它可能是launchy gem的平台特定问题。只是想确认你没有一个会删除所有保存页面的后套件挂钩,是吗?@Tom谢谢你看这个。我没有后置套件挂钩——标题为“问题代码”的代码就是让它发生在我身上所需要的全部。