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
有没有办法传递params来评估方法?
答案 0 :(得分: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 :(得分: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
答案 2 :(得分: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'
});