node.js - 为什么 Zombie.js 不能与 Google Charts 一起使用?

标签 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?

最佳答案

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

要完成您正在尝试做的事情,我强烈建议您使用 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/

相关文章:

javascript - 我应该在每个类方法中创建一个新的 Promise 吗?

node.js - MongoDb 聚合出现错误

javascript - Node.js - 为什么在使用 mocha 和 zombie 进行测试时会出现泄漏?

node.js - 模块版本与 headless 浏览器和桌面 Node 不匹配

node.js - 使用 Zombie 测试 Node.js 应用程序

debugging - NodeJS - NodeJS 的分步调试器

javascript - POST请求挂,mongodb和express?

javascript - 如何测试 REST API + 客户端 MVC 应用程序?

javascript - Zombie.js 无法访问 DOM 元素的数据集属性

javascript - zombie 代码中的语法 `async/await` 是什么?