我有一个加载 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()
调用请求一堆外部资源:
在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?
最佳答案
您遇到此问题的一个可能原因是您可能没有正确创建等待图表呈现的回调/超时,尽管这只是一个猜测。
要完成您正在尝试做的事情,我强烈建议您使用 PhantomJS反而。有几个记录在案的 ZombieJS 问题案例和 Google Charts API 不能很好地协同工作。
使用 PhantomJS,您可以使用图表创建一个 html 文件,并使用您的代码创建一个 javascript 文件。最后,您将使用 PhantomJS 执行您的 javascript 文件:
phantomjs chart.js
可以找到关于如何使用 PhantomJS 执行此操作的更深入的描述 here .
关于node.js - 为什么 Zombie.js 不能与 Google Charts 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119174/