2013-03-12 29 views
18

È possibile passare variabili in una pagina. Valutare nel mio caso qui sotto?Passare la variabile in pagina.valutazione - PhantomJS

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(); } 

}); 

} 

Ho provato diversi metodi trovati su Internet ma nulla di veramente impossibile da ottenere per le sue variabili.

vi ringrazio in anticipo per il vostro aiuto :)

risposta

62

Come al solito, la risposta è chiaramente indicato nella funzione documentation di evaluate:

A partire dal PhantomJS 1.6, argomenti JSON-serializzabili possono essere passati alla funzione. Nell'esempio seguente, viene estratto il valore di testo di un elemento DOM. L'esempio seguente ottiene lo stesso obiettivo finale dell'esempio precedente, ma l'elemento viene scelta in base un selettore che viene passato alla chiamata valutare:

L'esempio che segue dimostra l'utilizzo:

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

Questo non è quello che voglio fare è, voglio essere in grado di raggiungere alle variabili passate come parametri per la mia funzione. – Antoine

+7

Hai persino analizzato e provato la mia risposta? Credo che quello che vuoi fare è: page.evaluate (function (arg1, arg2) {console.log (arg1 + arg2);}, arg1, arg2) ;. –

+1

Sì, voglio farlo! Grazie mille ! : D – Antoine

2

ho phantomjs 1.5.0, così invece di compilazione 1.6 o versione superiore sono andato per una soluzione alternativa:

argomenti così ho salvato su file di selectors.js

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

e poi iniettato nella pagina:

page.injectJs("selectors.js"); 

Maggiori dettagli possono essere trovati qui: http://phantomjs.org/api/webpage/method/inject-js.html

Problemi correlati