在 Rails 应用程序的 Ruby 中使用 PhantomJS

Using PhantomJS in Ruby on Rails application

我想在我的主要应用程序生命周期中使用 PhantomJS 来截取用户提交的远程 URL 的屏幕截图。

我熟悉 Poltergeist 与 Capybara/Rspec 的结合使用。但是我将如何手动初始化 page 对象?

要在您的应用中初始化水豚会话,您只需执行类似

的操作
session = Capybara::Session.new(:poltergeist)

( 如文档所述 here) and then rather than using page just call Capybara methods on session. One thing to note is that if you're going to test the app with Capybara too you will probably want to register a separate driver for the app and testing - https://github.com/jnicklas/capybara#configuring-and-adding-drivers 。此外,由于 Capybaras 配置不是线程安全的,更改任何 Capybaras 设置都可能会影响测试会话和应用内会话。

更好的解决方案可能是设置 a separate Node.js service which runs phantom.js - in fact there are quite a few projects that provide a ready made screen capture webserver / console command

Capybara 是一个测试工具,通过 ruby 调用 javascript 运行 时间会增加大量开销,而且不是线程安全的。事实上,它并非设计用于 运行 在生产中也是一个相当大的问题。

相反,您只需通过 HTTP 或通过 运行来自 Ruby 的 shell 命令调用您的屏幕截图服务。

我非常喜欢 Rails 应用程序中的 phantomjs。

我的建议是使用:

watir (https://github.com/watir/watir)
phantomjs (http://phantomjs.org/download.html)

您可以按照以下步骤轻松截取屏幕截图:http://watir.github.io/docs/screenshots/

如果您想使用 Page,我认为您应该在此处看到 PageObject:https://github.com/watir/watir/wiki/Page-Objects