2016-04-16 30 views
0

私はPhantomjsとJavaScript自体を初めて使いましたが、何らかの理由で変数名が宣言されていてもグローバル変数であるというエラーが表示されます。変数が見つかりません

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

答えて

1

ウェブページのコンテキストで指定した関数を評価
evaluate(function, arg1, arg2, ...) {object}

を評価します。実行は、[...]サンドボックス遠隔地におけるブラックボックスのようpage.evaluate()の

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

思われます。あなたのスクリプトの何も分かっておらず、特にに渡す人以外の変数はありません。です。方法は次のとおりです。

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 
関連する問題