2012-11-06 2 views
7
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 

}); 

dies wirft michcasperjs params nicht

string(307) "[37;41;1mFAIL[0m ReferenceError: Can't find variable: phone_number

Gibt es eine Möglichkeit zu bewerten vorbei params passieren Methode zu bewerten?

Antwort

20

so etwas wie dieses Versuchen:

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

Weitere Informationen:

  1. eine kühle link on javascript scoping
  2. Füllung Formen? es gibt eine API for that
1

Ich weiß nicht, was mit Ihrem Code falsch ist. Werfen Sie einen Blick auf die CasperJS API:

Wertet einen Ausdruck in der entfernten Seitenkontext, ein bisschen wie das, was PhantomJS‘WebPage # bewerten tut, kann aber auch übergebenen Argumente verarbeiten, wenn Sie ihren Kontext definieren:

Beispiel :

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

Die anderen Antworten sind vor 1.0. Der bevorzugte Weg ist

Beispiel

casper.evaluate(function(username, password) { 
    document.querySelector('#username').value = username; 
    document.querySelector('#password').value = password; 
    document.querySelector('#submit').click(); 
}, 'sheldon.cooper', 'b4z1ng4'); 
entlang der Argumente in Linie passieren

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