Sto scrivendo uno script che genera immagini PNG da ogni pagina del mio frontend. Sto usando angolare per l'interfaccia utente e catturando le pagine con il fantoccio.attendere che l'applicazione angolare sia completamente renderizzata dallo script fantasma
La vista prendere un po 'fino a finitura angolare rendendolo così devo aspettare un po' prima della cattura:
var page = require('webpage').create();
page.open('http://localhost:9000/', function() {
window.setTimeout(function() {
page.render('snapshot.png');
phantom.exit();
}, 2000);
});
Mi chiedo se ci sia un modo migliore per raggiungere questo obiettivo. Ho trovato angolare in grado di emettere un evento quando la pagina viene visualizzata completamente:
$scope.$on('$viewContentLoaded', function() {
// do something
});
e ha trovato un modo per comunicare al fantasma con onCallback
così ho potuto scrivere qualcosa di simile:
$scope.$on('$viewContentLoaded', function() {
window.callPhantom({ hello: 'world' });
});
Poi in altro luogo sceneggiatura fantasma:
page.onCallback = function() {
page.render('snapshot.png');
phantom.exit();
};
Ma mi sono perso in come iniettare angolare $viewContentLoaded
maniglia dallo script fantasma.
Non so se evaluate
/evalueateAsyn
sono la strada da percorrere ...
page.evaluateAsync(function() {
$scope.$on('$viewContentLoaded', function() {
window.callPhantom({ hello: 'world' });
});
});
Forse ho potuto accedere il diritto $scope
in qualche modo. Qualche idea?
la mia domanda riguarda l'iniezione del codice angolare nello script fantasma poiché non voglio mescolare le dipendenze di test nella sorgente di frontend –
@ PauFracés che vedo; Ho aggiornato con un po 'più informazioni - spero che aiuti. –
"puoi trovare l'elemento con la direttiva e chiamare" mi dispiace, ma non so come farlo –