2016-04-16 23 views
0

Ich bin neu in Phantomjs und JavaScript selbst, aber aus irgendeinem Grund bekomme ich den Fehler, dass die Variable Benutzername nicht gefunden werden kann, obwohl ich es erklärt habe und dass es eine globale Variable ist.Variable kann nicht gefunden werden

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

page.open('https://www.facebook.com/login.php?login_attempt/', function(status) { 
    page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js', function() {   
     var username = "test"; 
     var password = "test"; 
     page.evaluate(function() { 
      $("#email").val(username); 
      $("#pass").val(password); 
      $("#loginbutton").click(); 
     }); 
     page.onLoadFinished = function() { 
      page.render("after_submit.png"); 
      if (page.url == "https://www.facebook.com/") { 
       var fs = require('fs'); 
       var path = 'succes.txt'; 
       var content = "Facebook : \n" + username; 
       fs.write(path, content, 'w'); 
      } 
      phantom.exit(); 
     }; 
     page.render("before_submit.png");   
    }); 
}); 

Antwort

1

bewerten
evaluate(function, arg1, arg2, ...) {object}

die gegebene Funktion im Rahmen der Web-Seite Wertet. Die Ausführung ist Sandbox [...]

http://phantomjs.org/api/webpage/method/evaluate.html

Denken Sie an page.evaluate() als Blackbox in Remote-Standort. Es kennt nichts von Ihrem Skript, hat keine Variablen außer denen, die Sie speziell zu ihm übergeben. Hier ist wie:

var username = "test"; 
    var password = "test"; 

    page.evaluate(function (username, password) { // <-- here you receive variables from outside the page 
     $("#email").val(username); 
     $("#pass").val(password); 
     $("#loginbutton").click(); 
    }, username, password); // <-- here you pass variables to webpage 
Verwandte Themen