继承人我的casperjs剧本
var ccommss = require('node_modules/ccomms');
var system = require('system');
var casper = require('casper').create({
logLevel: "debug",
waitTimeout: 10,
stepTimeout: 10,
verbose: true,
viewportSize: {
width: 1280,
height: 960
},
pageSettings: {
"userAgent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.10 (KHTML, like Gecko) Chrome/23.0.1262.0 Safari/537.10',
"webSecurityEnabled": false,
"ignoreSslErrors": true
},
onWaitTimeout: function () {
// casper.capture('./out/wait-timeout:_' + TimeTidy() + '.png');
// throw new Error stuff;
},
onStepTimeout: function () {
// casper.capture('./out/step-timeout' + TimeTidy() + '.png');
// throw new Error stuff;
}
});
var Visit = "https://example.com/login.html";
var use = {};
casper.start(Visit, function () {
casper.then(function () {
ccommss.CaptchaGet();
});
casper.then(function () {
ccommss.Login();
console.log(use.name + " " + use.pass + " " + use.turing);
});
casper.then(function () {
this.echo(this.getCurrentUrl());
});
});
casper.run();
问题是当我运行ccommss.Login()函数时,我已经构建了以下内容 casper.then statment this.getcurrenturl()在页面重定向
之前运行继承人是我的职能
exports.Login = function() {
var line = system.stdin.readLine();
var split = line.split (':');
casper.fill('form[name="reg"]', {
'login': split[0],
'password': split[1],
'turing': split[2]
}, false);
casper.click("input#sbt.submit[type='submit']");
return use.name = split[0],
use.pass = split[1],
use.turing = split[2];
};
运行时出现问题
casper.then(function () {
this.echo(this.getCurrentUrl());
});
它没用,因为这个功能仍在工作
ccommss.Login();
并且网址更改尚未发生 我知道我可以用somekind的回调修复它可以anybod帮我解决这个问题
答案 0 :(得分:1)
您将stepTimeout设置为10毫秒。在登录步骤中处理任何事情都没有足够的时间。所以我的猜测是中止登录步骤并执行下一步。默认情况下,脚本为die
,但您提供了一个stepTimeout回调,用于禁用die()
。
解决方法是将超时时间增加到5秒( 5000 )。顺便说一句,waitTimeout
也太短了。