我尝试在页面中登录:
var casper = require('casper').create();
casper.start('http://sprashivai.ru/', function() {
this.click('#signin_link');
this.capture('foo.jpg', undefined, {
format: 'jpg',
quality: 75
});
this.fillSelectors('form', {
'#signin_username' : 'admin@*****',
'#signin_pass' : '*****'
}, true);
casper.then(function() {
this.capture('foo_2.jpg', undefined, {
format: 'jpg',
quality: 75
});
});
casper.thenOpen(function() {
this.capture('foo_3.jpg', undefined, {
format: 'jpg',
quality: 75
});
});
casper.then(function() {
this.capture('foo_4.jpg', undefined, {
format: 'jpg',
quality: 75
});
});
this.waitForSelector("#top_nq_badge",
function pass () {
test.pass("Found #top_nq_badge");
},
function fail () {
test.fail("Did not load element #top_nq_badge");
},
20000 // timeout limit in milliseconds
);
});
casper.run();
我知道登录后我可以看到元素#top_nq_badge,但是waitForSelector对我不起作用。 我如何在页面上使用CasperJS登录?
我运行脚本: $ casperjs secr.js 它没有打印,脚本成功没有错误。
foo_3.jpg和foo_4.jpg文件不是由脚本创建的。 但我的foo.jpg和foo_2.jpg截图:
答案 0 :(得分:1)
没有test
变量,要捕获有关它的错误,您需要使用.on('error'
回调,加载选择器#top_nq_badge
的速度非常慢。
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
waitTimeout: 5000,
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4',
viewportSize:{width: 1600, height: 900}
})
.on('error', function(msg) {
this.echo('Error: ' + msg, "ERROR");
})
.on('remote.message', function(msg) {this.echo('The error from evaluate: ' + msg, "ERROR");})
.start('http://sprashivai.ru/', function() {
this
.click('#signin_link');
this.wait(0,function(){var i=0;
function snap(){i++;casper.capture('foo_'+i+'.jpg', undefined,{format: 'jpg',quality: 75});if(i<4){setTimeout(snap,1000)}}snap();
})
.fillSelectors('form', {
'#signin_username' : '<login_here>',
'#signin_pass' : '<pass_here>'
}, true)
.waitForSelector("#top_nq_badge",
function success() {
this
.echo('logged in!', 'INFO')
.capture('in.png')
},
function fail(){
this
.capture('failed.png')
.echo('failed to login', 'ERROR');
})
})
.run()