Tay*_*tes 16 ruby-on-rails capybara ruby-on-rails-3
我刚刚将我的水豚更新到2.0,并且我的所有save_and_open_page调用都返回了一个没有样式的html页面.它在页面顶部正确显示样式表链接.当我回到capybara 1.3时,样式再次起作用.任何人都知道如何解决这个问题,和/或问题是什么?
谢谢,戴夫
更新1.
破解:
我找到了一个合理的方法来解决simonmorley推荐的链接:Capybara Webkit问题 ,它指向:capybara-screenshot
它涉及使用capybara-screenshot gem获取页面外观的截图.将它与生成html的save_and_open_page结合使用时,您可以看到它的外观,并查看HTML.
save_and_open_page
Capybara::Screenshot.screenshot_and_open_image
Run Code Online (Sandbox Code Playgroud)
如果我可以开始Capybara::Screenshot.screenshot_and_save_page工作,那么我认为我可能有一个解决方案(如果名称暗示我认为它的行为).但是,当我尝试它时,我得到了cannot load such file -- capybara/util/save_and_open_page
更新2.
!等等,screenshot_and_open_image现在不工作(没有创建或显示png图像).!
更新3.
测试应用:
我创建了一个测试应用程序,并将其发布在Github上的test_capybara_screenshot中.
当我在开发中运行此测试应用程序时,页面会显示出明亮的红色背景样式.当我运行测试时,唯一对我有用的是save_and_open_page,除了没有样式.
注意,当我运行任何测试时,我收到以下警告:
警告:Nokogiri是针对LibXML版本2.7.8构建的,但动态加载了2.7.3
rspec测试的详细信息:
Rack :: Test水豚驱动程序无法输出屏幕截图.跳绳.
打开失败////ocuments/experiments/test_capybara_screenshot/tmp/capybara/screenshot-2012-11-26-07-48-29.png with options {}:找不到应用程序来处理'/〜/ Documents/experiments/test_capybara_screenshot /tmp/capybara/screenshot-2012-11-26-07-48-29.png"
后挂钩发生错误
LoadError:无法加载此类文件 - capybara/util/save_and_open_page发生在〜/ .rvm/gems/ruby-1.9.3-p125 @ global/gems/activesupport-3.2.6/lib/active_support/dependency.rb:251:在`require'
sim*_*ley 24
尝试将以下内容添加到您的gem文件中
group :test do
gem "capybara"
gem "launchy"
end
Run Code Online (Sandbox Code Playgroud)
如果没有这个我不相信save_and_open_page将无法工作.
- 更新 -
我已经为你测试了这个,当我使用save和open方法时,我得到了同样的错误.在我的设置中,这是因为我的页面引用了:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
这种情况发生在Firefox,Chrome和Safari中.根据检查员的说法,没有找到任何文件.
我没有详细研究这个问题,也没有答案为什么它不起作用.然而,也有许多人在努力解决这个问题:
https://github.com/jnicklas/capybara/issues/485
并且,有关水豚和资产预编译的更多信息:
https://github.com/jnicklas/capybara/pull/609
这可能是一个解决方案:
https://groups.google.com/forum/#!msg/ruby-capybara/SBCor8UUj7w/hv97EgUQ1P4J
但是,如果您只想查看自己的页面,可以尝试以下操作:删除剪贴簿save_and_open_page并更改测试以使用javascript.这样,我的网页打开就好了.
require 'spec_helper'
describe "Foo" do
it "should fail if Bar is lactose intolerant", :js => true do
# .....
end
end
Run Code Online (Sandbox Code Playgroud)
试试看,如果有帮助,请告诉我.
回复(来自Taylored网站):
我看到页面几秒钟,然后就消失了.有没有办法让浏览器窗口不关闭?
在浏览和挖掘博客之后,我能够通过save_and_open_page解决问题.我从我的项目中删除了capybara_screenshot gem.您可以在我的github test_capybara_screenshot存储库中查看我的工作代码.我想出的解决方案使用了我在capybara github网站上找到的一些指针.
假设:
我做的第一件事是设置它,以便将资产预编译到测试目录中.我这样做是通过将以下代码添加到循环中的spec/spec_helper.rb文件中RSpec.configure:
config.before (scope = :suite) do
%x[bundle exec rake assets:precompile]
end
Run Code Online (Sandbox Code Playgroud)
我在config/environments/test.rb文件中指定了资产预编译的位置:
config.assets.prefix = "assets_test" # place test assets in public/assets_test directory
config.action_controller.asset_host = "file://#{::Rails.root}/public"
Run Code Online (Sandbox Code Playgroud)
这使得测试资产独立于开发资产,并且仅在测试套件运行期间生成.
如果你这样做,你可能希望让git忽略这些/public/assets*目录.
| 归档时间: |
|
| 查看次数: |
14140 次 |
| 最近记录: |