使用zombie.js同步外部JS加载

时间:2012-07-29 19:55:50

标签: javascript zombie.js

问题:

我正在使用zombie.js来测试我的客户端javascript,但我遇到了一个问题。 Zombie.js不提供同步<script>标记执行,实际上似乎根本不执行外部JS文件。基本测试证实了这一点:

<script type="text/javascript" src="test1.js"></script>
<script type="text/javascript" src="test2.js"></script>
<script type="text/javascript" src="test3.js"></script>

<script type="text/javascript">
   console.log("Inline javascript.");
</script>

每个测试#.js都包含一行:console.log("TEST#.JS");

当我在常规浏览器中渲染时,控制台会显示预期的:

TEST1.JS
TEST2.JS
TEST3.JS
Inline javascript.

但是当我用zombie.js运行它时,我只看到一行Inline javascript.

以下是我试图解决的问题:

  1. 使用document.createElement动态地将脚本标记附加到文档
  2. 使用document.write将脚本块添加到html
  3. setTimeout上使用console.log("Inline javascript")与1和2结合使用,可以为测试脚本提供一些时间来加载。
  4. 除了将所有外部JS文件中的JS代码放入一个巨大的<script>块之外,还有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

您确定浏览器对象的“runScripts”选项设置为true吗?如果没有,您可以使用以下语法:

browser.visit('... your page url ...', { runScripts: true }, function (e, b) { 
    console.log('executing callback'); 
});