J'ai utilisé de deux manières différentes dans le passé, y compris de la page.evaluate() méthode qui interroge les DOM que Declan mentionné. L'autre façon dont je l'ai transmis l'info à partir de la page web est de cracher à la console.log() à partir de là, et dans le phantomjs utiliser un script:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +msg);
}
Je pourrais aussi piège de la variable msg dans la onConsoleMessage et de recherche pour certains encapsuler les données. Dépend de comment vous voulez utiliser la sortie.
Puis, dans la Nodejs script, vous devez analyser la sortie de la Phantomjs script:
var yourfunc = function(...params...) {
var phantom = spawn('phantomjs', [...args]);
phantom.stdout.setEncoding('utf8');
phantom.stdout.on('data', function(data) {
//parse or echo data
var str_phantom_output = data.toString();
// The above will get triggered one or more times, so you'll need to
// add code to parse for whatever info you're expecting from the browser
});
phantom.stderr.on('data', function(data) {
// do something with error data
});
phantom.on('exit', function(code) {
if (code !== 0) {
// console.log('phantomjs exited with code ' +code);
} else {
// clean exit: do something else such as a passed-in callback
}
});
}
L'espoir qui aide certains.