在Rails 3.1.2项目(mac OS X)中工作,我已经正确安装了PhantomJS(我可以运行以下代码,它可以完美运行,可以准确地捕获页面标题并保存准确的屏幕截图)

try_phantom.coffee

page = require('webpage').create()
page.open 'http://localhost:5000/parties/onetestparty', (status) ->
    title = page.evaluate -> document.title
    console.log "Title: #{title}"
    page.render './log/javascript_screenshot.png'
    phantom.exit()

但是,当我尝试在rspec中使用capybara/poltergeist时,如下所示:

spec_helper.rb
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist

然后在需要JavaScript的调用中使用规范:

partys_spec.rb
        it "should allow a simple screenshot", js: true do
            visit "/"
            page.driver.render('./log/screen_Home.png', :full => true)
        end

似乎没有呈现我的JavaScript,并且屏幕截图也始终为 空白!

我已经尝试过调试器,但是这似乎还会弹出一个空白的HTML页面(只是带有空的head和body标签的html)

我很确定问题是 capybara 和poltergeist之间的接口(interface),或者是(更可能是)poltergeist和phantomjs之间的接口(interface)。以下是相关gem的版本:



不确定如何进一步解决问题...任何帮助将不胜感激。

最佳答案

创建一个非常简单的测试,看看会发生什么。

simple_spec.rb

require 'spec_helper'
require 'capybara/poltergeist'
include Capybara::DSL
Capybara.javascript_driver = :poltergeist

describe 'some stuff which requires js', :js => true do
  it 'will take a screenshot' do
    visit("http://google.com")
    page.driver.render('./file.png', :full => true)
  end
end

这样会让您获得Google的图片吗?

关于ruby-on-rails-3 - Rails Phantomjs,poltergeist和Capybara的游戏表现不佳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13572034/

10-09 13:51