htmlUnit如何处理未完善的javascript?

How htmlUnit deal with unperfected javascript?

我知道当我们使用 HTMLUnit 时,他们希望在其 Web 客户端上完全 javascript 运行。但是当 javascript 代码像

时我们如何处理
document.createNodeIterator(root,NodeFilter.SHOW_ALL,null,false);

它抱怨 "Cannot find function createNodeIterator in object" 在 document.createNodeIterator 上在浏览器上运行良好。

这是堆栈跟踪:

com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot find function createNodeIterator in object [object HTMLDocument]. (https://cdn01.icims.com/platform_14.2.150421.78248/erac.icims.com/icims2/servlet/icims2?module=AppInert&action=bundleJavascript&scripts=%2Fportal%2Fjquery-1.8.0.js%2C%2Flib%2Fdomreplacement%2FdomReplacement.js%2C%2Fcommon%2Ficims.js%2C%2Fportal%2Futils.js%2C%2Fportal%2FshowMoreTextAbstract.js%2C%2Fportal%2Ffield.js%2C%2Fportal%2Flogin.js%2C%2Ffield%2Fvalidate.js%2C%2Fcommon%2FicimsTrickle.js%2C%2Fcommon%2FicimsDropdown.js%2C&a=1429647520000#21)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:705) [htmlunit-2.15.jar:2.15]
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620) [htmlunit-core-js-2.15.jar:na]
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513) [htmlunit-core-js-2.15.jar:na]
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:637) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:612) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1001) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:179) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:239) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:824) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:748) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.HtmlElement.run(HtmlElement.java:920) [htmlunit-2.15.jar:2.15]
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620) [htmlunit-core-js-2.15.jar:na]
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513) [htmlunit-core-js-2.15.jar:na]
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:925) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1298) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:290) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:475) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:342) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.BaseFrameElement.loadInnerPageIfPossible(BaseFrameElement.java:184) [htmlunit-2.15.jar:2.15]
    at com.gargoylesoftware.htmlunit.html.BaseFrameElement.loadInnerPage(BaseFrameElement.java:122) [htmlunit-2.15.jar:2.15]

NodeIterator刚刚实现,请尝试最新的快照。

可以找到测试用例here

可以在 maven 或 build server(以访客身份登录)中找到最新快照