Lecture de la variable javascript du site Web à l'aide de PhantomJS

Je suis nouveau pour Javascript et PhantomJS, mais mon objectif, qui semble être simple, s'est révélé plus difficile à réaliser que prévu. Je souhaite écrire un script qui chargerait un site Web, puis afficher la valeur d'une variable Javascript utilisée sur cette page. Si j'ouvre cette page dans un navigateur et j'ouvre la console Javascript, je peux taper le nom de la variable et il me dit la valeur associée à ladite variable. J'essaie simplement de reproduire cette fonction mais avec PhantomJS afin que je puisse automatiser cette tâche.

Quelqu'un pourrait-il me pointer vers la bonne documentation pour cela? Je n'ai pas pu trouver comment faire une telle chose, en supposant que PhantomJS est la bonne façon de le faire. Peut-être existe-t-il une alternative plus simple?

Merci.

Ce que vous devez comprendre, c'est que phantomJS a deux environnements JavaScript et ces deux sont indépendants l'un de l'autre. L'intérieur est le script de document (que vous avez dans n'importe quel navigateur). L'extérieur contrôle le phantomJS. Il simule l'utilisateur.

Donc, dans un sens, vous devez dire à PhantomJS "l'utilisateur a ouvert la console JavaScript n'importe quel type ... ". La commande d'évaluation le fait.

Donc, pour lire la valeur de la variable foo , vous écrivez ce code:

 var foo = page.evaluate(function() { return document.foo; }); 

Remarque: Le document n'est pas strictement nécessaire, mais il permet de garder les deux environnements à l'écart du responsable du développeur.

La réponse d'Aaron n'a pas fonctionné pour moi. Peut-être était-il valide en 2013, mais maintenant (2016), cela ne fonctionne plus avec la version actuelle. Dans l'exemple d'Aaron, foo renvoie une promesse, pas une valeur. console.log(foo) Promise { <pending> } .

Voici ce que j'ai compris:

 page .evaluate( function(){ return window.foo }) .then ( function(foo){ console.log "foo = ", foo}); 

Maintenant, vous obtenez vraiment la valeur de foo.