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 :)
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);
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
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);