page.evaluate に変数を渡す - PhantomJS 質問する

page.evaluate に変数を渡す - PhantomJS 質問する

以下のケースでは、page.evaluate で変数を渡すことは可能ですか?

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

});

}

インターネットで見つかったいくつかの方法を試しましたが、変数にアクセスすることは実際に不可能ではありませんでした。

ご協力をよろしくお願いします:)

ベストアンサー1

いつものように、答えはドキュメンテーション機能evaluate:

PhantomJS 1.6 以降では、JSON シリアル化可能な引数を関数に渡すことができます。次の例では、DOM 要素のテキスト値が抽出されます。次の例では、前の例と同じ最終目的が達成されますが、要素は、evaluate 呼び出しに渡されるセレクターに基づいて選択されます。

次の例は使用方法を示しています。

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

おすすめ記事