私は SpookyJS/CasperJS が初めてで、実行フローを理解しようとしています。
これは私が達成しようとしているものです:
ページを読み込む
ページの画像を保存する
この画像を関数に渡して実行します (このプロセスはかなり長くなります: ~15 秒)
関数が結果を返すのを待ちます
返された値を使用して、読み込まれたページのフォームのフィールドに入力します
フォームを送信する
これは、私が思いついた解決策を説明しようとするコード スニペットです。
var globProcessedImage;
try {
var Spooky = require('spooky');
} catch (e) {
var Spooky = require('../lib/spooky');
}
var spooky = new Spooky({
child: {
transport: 'http'
},
casper: {
logLevel: 'debug',
verbose: true
}
}, function (err) {
if (err) {
e = new Error('Failed to initialize SpookyJS');
e.details = err;
throw e;
}
spooky.start('http://example.com/');
spooky.then(function() {
this.captureSelector('./image.png', '#img-node');
});
spooky.waitFor(function() {
this.emit('image.processed');
return globProcessedImage !== undefined;
}, function then() {
processedImage = globProcessedImage;
this.sendKeys('#imagePassword', processedImage);
});
spooky.then(function() {
this.capture('./page.png');
});
spooky.run();
spooky.on('image.processed', function() {
setTimeout(function() {
globProcessedImage = 'my_result_string';
}, 15000);
});
});
spooky.on('error', function (e, stack) {
console.error(e);
if (stack) {
console.log(stack);
}
});
spooky.on('log', function (log) {
if (log.space === 'remote') {
console.log(log.message.replace(/ \- .*/, ''));
}
});
アプリケーションを実行すると、次のエラーが表示されます。
ReferenceError: Can't find variable: globProcessedImage
globProcessedImage
SpookyJS で可視化するにはどうすればよいですか? これは、Web 自動化中に外部関数を処理するための正しいアプローチですか?
前もって感謝します。