JavaScript未在HtmlUnit中正确执行

时间:2013-10-28 22:57:50

标签: java javascript cryptography 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不包含加密。是否可以自己包含加密库?

1 个答案:

答案 0 :(得分:4)

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

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

我的建议:

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