用Ruby在网页中执行JS的最高效方式(HtmlUnit, Celerity, PhantomJS, CasperJS

Most performant way to execute JS within a webpage in Ruby (HtmlUnit, Celerity, PhantomJS, CasperJS ...)

本文关键字:HtmlUnit 方式 Celerity CasperJS PhantomJS 高效 网页 Ruby 执行 JS      更新时间:2023-09-26

在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…