用Ruby在网页中执行JS的最高效方式(HtmlUnit, Celerity, PhantomJS, CasperJS
Most performant way to execute JS within a webpage in Ruby (HtmlUnit, Celerity, PhantomJS, CasperJS ...)
在JRuby中,在HTTP请求之后直接执行JS的最高效方式是什么?我知道所有的测试框架,如HtmlUnit, Celerity, Capybara + PhantomJS == Poltergeist, CasperJS等,但它们仍然是测试框架。
我需要的是一个简单的方法来执行所有的JS代码,这是包含在HTML抓取URL后,例如由Net::Http。
首先,这是不言而喻的:不要在生产环境中这样做!
执行一些从某处从互联网上拉出来的脚本是一个灾难的食谱。如果你使用它作为你的测试基础设施的一部分,它可能有一些用途,但我猜有一个更简单的方法来解决你的问题。
为了回答更普遍的问题,下面是如何初始化与JDK 1.6+捆绑在一起的JavaScript引擎(实际上是Rhino的精简版本,尽管这可能会在Java 8中发生变化):
import javax.script.ScriptEngineManager
import javax.script.SimpleBindings
manager = ScriptEngineManager.new
engine = manager.getEngineByName("JavaScript")
bindings = SimpleBindings.new
bindings['x'] = 1
engine.eval("print(x)", bindings)
让你的引擎像jQuery一样评估任何依赖关系留给用户作为练习。看一下javax。脚本JavaDoc。
如果您需要对评估环境有更多的控制,您必须直接使用Rhino,或者等待Nashorn…
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 使用javascript存储变量的最安全方式
- 以可优化的方式使用requirejs加载模板
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 如何“;过滤器”;或者以其他方式重构该数据
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- Javascript以不同的方式声明数字
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- 用Ruby在网页中执行JS的最高效方式(HtmlUnit, Celerity, PhantomJS, CasperJS