fea*_*ool 6 ruby capybara phantomjs poltergeist
看来我正在回顾SO帖子中所采取的步骤: Capybara,Poltergeist和Phantomjs,并在身体上做出空洞的反应.(如果需要,请将此标记为重复,但我包含一个最小的独立测试用例和版本号.)
我做了什么明显错误的事吗?我可以运行另一个可以帮助隔离问题的最小测试吗?
file:pgtest.rbrequire '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)
值得注意的是,我可以使用phantomjs从www.google.com中提取html:
file:pjs_dump.jsvar 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似乎正常工作.
这对我有用:
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)