为什么Zombie.js不能使用Google Charts?

时间:2017-05-22 17:52:57

标签: node.js zombie.js

我有一个加载Google Chart API的简单网页:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
    google.charts.load("current", {packages:["corechart"]});
    console.log("load() called");
</script>

当我用浏览器点击它时它工作正常。在Chrome中,load()调用会请求大量外部资源:

  

External resources (Chrome)

Zombie中,只请求一个外部资源:

zombie Opened window http://localhost/graph  +7s
zombie GET http://localhost/graph => 200 +17ms
zombie Loaded document http://localhost/graph +15ms
zombie GET https://www.gstatic.com/charts/loader.js => 200 +71ms
load() called
zombie Event loop is empty +135ms

这是我的简单Zombie代码,供参考:

Browser.visit('http://localhost/graph', function (err, browser) {
    if (browser.errors.length > 0)
        return console.log(browser.statusCode, browser.errors);
});

未报告任何错误。我也尝试等待几秒钟browser.wait(),以及实际加载图表的full web page。 Zombie从不加载其他资源,当然也从不调用任何Google Charts回调。

为什么Zombie似乎无法使用Google Charts API?

1 个答案:

答案 0 :(得分:1)

您遇到此问题的一个可能原因是您可能没有正确创建等待呈现图表的回调/超时,但这只是猜测。

要完成您要执行的操作,我强烈建议您使用PhantomJS。有几个记录在案的ZombieJS问题和谷歌图表API没有很好地协同工作。

使用PhantomJS,您可以使用图表制作一个html文件,也可以使用您的代码创建一个javascript文件。最后,您将使用PhantomJS执行您的javascript文件:

phantomjs chart.js

可以找到有关如何使用PhantomJS执行此操作的更深入说明{。{3}}。