最小的Capybara/Poltergeist测试返回空页

fea*_*ool 6 ruby capybara phantomjs poltergeist

看来我正在回顾SO帖子中所采取的步骤: Capybara,Poltergeist和Phantomjs,并在身体上做出空洞的反应.(如果需要,请将此标记为重复,但我包含一个最小的独立测试用例和版本号.)

问题

我做了什么明显错误的事吗?我可以运行另一个可以帮助隔离问题的最小测试吗?

file:pgtest.rb
require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

module PGTest
  include Capybara::DSL
  extend self

  def test
    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app)
    end

    Capybara.current_driver = :poltergeist
    session = Capybara::Session.new(:poltergeist)

    visit "http://www.google.com"
    sleep 5
    puts session.html
  end
end

PGTest.test
Run Code Online (Sandbox Code Playgroud)

当按如下方式调用时,它会打印一个空页面:

$ ruby pgtest.rb
<html><head></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)

环境

  • OS X 10.8.5(12F45)
  • ruby 2.0.0p247(2013-06-27)[x86_64-darwin12.4.0]
  • 幻影1.9.2
  • 水豚(2.1.0)
  • 恶作剧者(1.4.1)

绝对的幻影

值得注意的是,我可以使用phantomjs从www.google.com中提取html:

file:pjs_dump.js
var page = require('webpage').create();
page.open("http://www.google.com", function () {
    var html = page.evaluate(function () {
        return document.documentElement.outerHTML;
    });
    console.log(html);
    phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

当我运行'phantomjs pjs_dump.js'时,它会从www.google.com打印html,因此phantomjs似乎正常工作.

Jef*_*ine 1

这对我有用:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

Capybara.run_server = false
Capybara.current_driver = :poltergeist

class PGTest
  include Capybara::DSL

  def test
    visit "http://www.google.com"
    puts page.body
  end
end

PGTest.new.test
Run Code Online (Sandbox Code Playgroud)

  • 确实,这有效。现在了解你的示例和我的示例之间的显着区别是什么会很有趣。即使您没有回答“我做错了什么”,您也会得到复选标记。 (3认同)