我想将PhantomJS作为主要应用程序生命周期的一部分,以截取用户提交的远程URL的截图。
我熟悉将Poltergeist与Capybara / Rspec结合使用。但是我该如何手动初始化page
对象?
答案 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