我已经为场景故障制作了一个简单的Gem来为Capybara Webkit做截图,它还保存了当前页面的HTML文件,无论你使用的是哪个Capybara驱动程序。但是,我遇到了一个我无法看到的问题,即每当调用Gem中的代码时,page.body
为空。但是,当我在Rails应用程序中使用完全相同的代码时,page.body
不为空。
gem代码在https://github.com/mattheworiordan/capybara-screenshot
的Github上如果您看一下,您会看到我有一个lib/capybara-screenshot/world.rb文件,可以访问page.body并保存内容。问题是,当Gem访问page.body,page.body为空并且只包含:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
我在gem's lib root file中包含了world.rb,所以我无法真正看到我做错了什么。
奇怪的是,如果我将一个后块放入我的sample Rails app env.js file访问页面.body有正确的HTML,所以看起来在页面释放后调用Gem中的{my code}之后正在执行。
gem代码位于https://github.com/mattheworiordan/capybara-screenshot,gem位于https://rubygems.org/gems/capybara-screenshot。您可以通过简单地运行黄瓜来快速重新创建此问题的示例Rails应用程序位于https://github.com/mattheworiordan/capybara-screenshot-test
我觉得答案很简单,但由于某些原因我看不到它。我感谢您提供的任何帮助。
答案 0 :(得分:2)
Joe Ferris在Thoughtbot上指出了我正确的方向,并指出你需要确保在Capybara之后加载After hook,所以我需要确保需要我依赖的任何文件。在这种情况下,我需要要求水豚/黄瓜。
看到工作宝石