10
casper.then(function(){
 phone_number   = '7wqeqwe6';
 phone_password = 'Teqweqweqw34';

});



casper.thenEvaluate(function(phone,password) {

document.querySelector('input#myTMobile-phone').setAttribute('value',phone);
document.querySelector('input#myTMobile-password').setAttribute('value',password);

//  document.querySelector('form').submit();
}, { 

phone    : phone_number,
password : phone_password

});

これは私を投げます

string(307) "[37; 41; 1mFAIL [0m ReferenceError:変数が見つかりません:phone_number

メソッドを評価するためにパラメータを渡す方法はありますか?

4

3 に答える 3

22

次のようなものを試してください。

var phone_number = '7wqeqwe6',
    phone_password = 'Teqweqweqw34';

casper.start('http://…');

casper.thenEvaluate(function(phone, password) {
    document.querySelector('input#myTMobile-phone').setAttribute('value', phone);
    document.querySelector('input#myTMobile-password').setAttribute('value', password);
    //  document.querySelector('form').submit();
}, {
    phone: phone_number,
    password: phone_password
});

ノート:

  1. javascriptスコープのクールなリンク
  2. フォームに記入しますか?そのためのAPIがあります
于 2012-11-10T07:17:47.223 に答える
10

他の答えは1.0以前です。推奨される方法は、引数を行に渡すことです

casper.evaluate(function(username, password) {
    document.querySelector('#username').value = username;
    document.querySelector('#password').value = password;
    document.querySelector('#submit').click();
}, 'sheldon.cooper', 'b4z1ng4');

http://docs.casperjs.org/en/latest/modules/casper.html#evaluate

于 2014-03-06T17:44:10.987 に答える
1

あなたのコードの何が問題なのかわかりません。CasperJS APIをご覧ください:

PhantomJSのWebPage#evaluateと少し似ていますが、コンテキストを定義すると、渡された引数を処理することもできます。

例:

casper.evaluate(function(username, password) {
    document.querySelector('#username').value = username;
    document.querySelector('#password').value = password;
    document.querySelector('#submit').click();
}, {
    username: 'sheldon.cooper',
    password: 'b4z1ng4'
});
于 2012-11-09T13:48:27.427 に答える