Question

J'essaie de faire un test simple de jQuery avec phantomjs :

var url = 'http://www.google.com/';
var page = require('webpage').create();
page.open(url, function () {
    page.injectJs('jquery.min.js');
    page.evaluate(function () {
        console.log($('title').text());
    });
    phantom.exit()
});

Cela devrait imprimer le titre, mais rien ne se passe.Quelqu'un peut-il me dire ce qui ne va pas ?

Était-ce utile?

La solution

page.evaluate exécute votre fonction dans le contexte de la page, pas dans le contexte PhantomJS.Donc, tout ce qui utilise console sera imprimé (et sera visible) uniquement pour l'instance de page Web actuelle.

Pour rediriger le console sortie, vous devez utiliser onConsoleMessage rappeler.

var url = 'http://www.google.com/';
var page = require('webpage').create();

page.onConsoleMessage = function(msg) {
    console.log(msg);
};

page.open(url, function () {
    page.injectJs('jquery.min.js');
    page.evaluate(function () {
        console.log($('title').text());
    });
    phantom.exit()
});

Référence: surConsoleMessage

Autres conseils

On dirait que tu as disparu # cibler un élément par id:

console.log($('#title').text());
// -----       ^ add here

si title est une classe alors vous pouvez l'utiliser .:

console.log($('.title').text());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top