为什么Zombie.js不适用于Google Charts?

我有一个加载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()调用请求一堆外部资源:

外部资源(Chrome)

在僵尸中 ,只有一个外部资源被请求:

 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 

这里是我简单的僵尸代码,供参考:

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

没有错误报告。 我也尝试了等待几秒钟, browser.wait() ,以及一个实际加载图表的完整网页 。 僵尸从不加载其他资源,自然也不会调用Google Charts的任何callback函数。

为什么僵尸似乎无法使用谷歌图表API?

你遇到这个问题的一个可能的原因是你可能没有正确创build等待图表渲染的callback/超时,尽pipe这只是一个猜测。

为了完成你所要做的事情,我强烈推荐使用PhantomJS 。 ZombieJS和Google Charts API存在几个logging在案的案例,它们并没有很好地结合在一起。

使用PhantomJS,您可以使用图表制作一个html文件以及一个包含代码的JavaScript文件。 最后,你会用PhantomJS执行你的javascript文件:

 phantomjs chart.js 

有关如何使用PhantomJS执行此操作的更深入的说明,请参阅此处 。