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

时间:2016-09-04 04:11:48

标签: ruby-on-rails phantomjs poltergeist

我想将PhantomJS作为主要应用程序生命周期的一部分,以截取用户提交的远程URL的截图。

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

3 个答案:

答案 0 :(得分:2)

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

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

(记录为here)然后,而不是使用page,只需在session上调用Capybara方法即可。需要注意的一点是,如果您要使用Capybara测试应用程序,您可能需要为应用程序注册一个单独的驱动程序并进行测试 - https://github.com/jnicklas/capybara#configuring-and-adding-drivers。此外,由于Capybaras配置不是线程安全的,因此更改任何Capybaras设置都可能会影响测试会话和应用内会话。

答案 1 :(得分:2)

更好的解决方案可能是设置a separate Node.js service which runs phantom.js - 实际上有很多项目提供a ready made screen capture webserver / console command

Capybara是一个测试工具,通过ruby调用javascript运行时会增加大量开销,也不会是线程安全的。它不是为生产而设计的事实也是一个非常重要的问题。

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

答案 2 :(得分:0)

我真的很喜欢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