我在玩 zombie 脚本:
var Browser = require('zombie');
var assert = require('assert');
var browser = Browser.create();
browser.debug = true;
browser.maxRedirects = 50;
browser.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
browser.visit('https://redacted.com').
then(function () {
console.log(browser.evaluate("document.URL"));
console.log(browser.evaluate("document.title"));
return browser.
fill('uid','aUser').
fill('password', 'aPassword').
pressButton('Sign In');
}).then(function() {
console.log("Signed in?");
console.log(browser.evaluate('document.URL'));
console.log(browser.evaluate("document.title"));
});
我看到了一个引用错误:
zombie_experiment$ node zombie1.js
https://redacted.com/
Possibly unhandled Error: ReferenceError: Raphael is not defined
at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/promise.js:669:58)
at Promise$_settlePromiseAt [as _settlePromiseAt] (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/promise.js:825:14)
at Promise$_settlePromises [as _settlePromises] (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/promise.js:968:14)
at Promise$_rejectPromises [as _rejectPromises] (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/promise.js:961:10)
at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/async.js:75:12)
at Async$consumeFunctionBuffer (/Users/user/zombie_experiment/node_modules/zombie/node_modules/bluebird/js/main/async.js:38:14)
at process._tickDomainCallback (node.js:463:13)
这个引用错误是真实的,还是我的脚本不是 zombie.js 的标准用例?
最佳答案
我无法让 Raphael 使用 zombiejs。和jsdom处理canvas的方式有关。 Raphael 在检测绘图引擎类型时静默失败。
对我来说,唯一的解决方案是避开我的应用程序中使用 Raphael 在 Canvas 上绘图的部分。 :(
关于testing - 在 zombie.js 中缺少 Raphael 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409662/