web-dev-qa-db-fra.com

Passage de la variable dans la page.Valuat - Phantomjs

Est-il possible de passer des variables dans une page.Valuée dans mon cas ci-dessous?

function myFunction(webpage, arg1, arg2){

var page = require('webpage').create();

page.viewportSize = { width: 1920, height: 1080 };

page.open(webpage, function (status){

    if (status == 'success') {

            page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function(){

                page.evaluate(function(){

                    arg = arg1 + arg2;
                    console.log(arg);

                });

            });

    } 

    else { phantom.exit(); }

});

}

J'ai essayé plusieurs méthodes trouvées sur Internet, mais rien n'est réellement impossible à atteindre ses variables.

Merci d'avance pour votre aide :)

22
Antoine

Comme d'habitude, la réponse est clairement indiquée dans la documentation de evaluate fonction:

À partir de Phantomjs 1.6, des arguments JSON-Serializings peuvent être transmis à la fonction. Dans l'exemple suivant, la valeur de texte d'un élément DOM est extraite. L'exemple suivant obtient le même objectif final que l'exemple précédent, mais l'élément est choisi sur la base d'un sélecteur qui est transmis à l'appel d'évaluation:

L'exemple que suit démontre l'utilisation:

var title = page.evaluate(function(s) {
    return document.querySelector(s).innerText;
}, 'title');
console.log(title);
69
Ariya Hidayat

J'ai des phantomjs 1.5.0, donc au lieu de compiler 1,6 ou une version supérieure, je suis allé pour une solution alternative:

Donc, j'ai enregistré des arguments sur Selectors.js File

-------------selectors.js starts----------------
var selectors = "div.Nice"
-------------selectors.js   ends----------------

puis les injectés dans la page:

page.injectJs("selectors.js");

Plus de détails peuvent être trouvés ici: http://phantomjs.org/api/webpage/method/Inject-js.html

2
Kostyantyn

J'utilise Phantom 4.0.4, ci-dessous travaille pour moi, https://www.npmjs.com/package/phantom

var arg = 'test'
page.evaluate(function(arg) {
    console.log(arg)
}, arg);
0
denisefeng