Я новичок в CasperJS и пытаюсь понять поток выполнения.
Это то, чего я пытаюсь достичь:
загрузить страницу
хранит изображение страницы
передать это изображение в функцию и выполнить ее (этот процесс довольно длинный: ~ 15 секунд)
подождите, пока функция вернет результат
использовать возвращенное значение для заполнения поля в форме на загруженной странице
отправить форму
это фрагмент кода, который пытается объяснить решение, которое я придумал:
var globProcessedImage;
var casper = require('casper').create({
viewportSize: {
width: 1024,
height: 768
}
});
casper.start('http://example.com/');
casper.then(function() {
this.captureSelector('./image.png', '#img-node');
});
casper.waitFor(function() {
return globProcessedImage !== undefined;
}, function then() {
this.sendKeys('#imagePassword', globProcessedImage);
});
casper.then(function() {
this.capture('./page.png');
});
casper.run();
casper.on('image.processed', function() {
setTimeout(function() {
globProcessedImage = 'my_result';
}, 15000);
});
Это приводит к ReferenceError: Can't find variable: globProcessedImage
.
Мне до сих пор неясно, как веб-автоматизация и «внешние» функции смешиваются вместе с CasperJS, а также как параметры передаются между страницей и средами casper/phantom.
emit
работает не так.emit
запускает обратный вызов Вы должны выполнять longProcess синхронно. Вы пробовали это полусинхронно, используяcasper.wait(20000)
? - person Artjom B.   schedule 14.05.2014casper.wait
? Что делать, если внешний процесс занимает более 20000 мс? - person lerio   schedule 15.05.2014