代码之家  ›  专栏  ›  技术社区  ›  mpontus

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

  •  1
  • mpontus  · 技术社区  · 9 年前

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

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

    3 回复  |  直到 9 年前
        1
  •  2
  •   Thomas Walpole    9 年前

    要在应用程序中初始化水豚会话,您可以执行以下操作

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

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

        2
  •  2
  •   max Mike Williams    9 年前

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

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

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

        3
  •  0
  •   ThienSuBS    9 年前

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