JavaScript未在HtmlUnit中正确执行

我目前正在使用HtmlUnit开发一些测试。 它正在加载一个包含braintree.js(它们的表单加密库)的页面。 我有一堆正在运行,但我被困在它调用加密的地方。 有问题的JS是:

(function() { try { var ab = new Uint32Array(32); crypto.getRandomValues(ab); sjcl.random.addEntropy(ab, 1024, "crypto.getRandomValues"); } catch (e) {} })(); 

HtmlUnit抛出:

 EcmaError, ReferenceError, "'crypto' is not defined." 

我想HtmlUnit不包括加密。 是否可以自己包含加密库?

根据您的评论,我必须告诉您,在JavaScript方面,HtmlUnit是一个痛苦的问题。 它会抱怨未定义的变量和未知函数等等。

真正的浏览器更灵活,例如:它们接受语法错误的JavaScript片段。 HtmlUnit期望一切都是完美的,没有任何错误。 此外,即使你没有错过分号,HtmlUnit可能会抱怨。

我的建议:

  • 确保您的JavaScript在语法上是正确的
  • 避免使用复杂的库(jQuery似乎得到了适当的支持)
  • 如果您可以使用非最小化版本的库,那么值得尝试一下
  • 尽量避免使用复杂的jQuery方法(例如:向元素动态添加事件)
  • 最重要的一个:尝试在不同的BrowserVersions之间切换。 事实certificate,Internet Explorer(具有讽刺意味)可以在解释JavaScript时提供最佳结果