我想使用http://docs.casperjs.org/en/latest/modules/casper.html#waitforurl中的waitForUrl()函数。发送登录表单后,casperjs应该等待下一页加载。在下面的代码中,您会看到"第二个变体"这是我尝试编码的方式,你也看到了出现的错误信息。 "第一个变种"正在运行,以便捕获dashboard.png。
有人可以解释"第二个变体"
的问题 // ...
// Type and send login Form
casper.then(function() {
this.evaluate(function(){
$("username").value="admin";
$("password").value="pass#";
$("login").click();
});
});
// First variant (works) -----------------
// casper.then(function() {
// this.clickLabel('Dashboard', 'a');
// });
// Second variant (works not, error) -----------------
// casper.waitForUrl(/\/admin\/index\.php/,function() {
// this.clickLabel('Dashboard', 'a');
//});
// -> [error] [phantom] Wait timeout of 5000ms expired, exiting.
// -> Wait timeout of 5000ms expired, exiting.
casper.then( function(){
this.capture('./dashboard.png');
});
答案 0 :(得分:0)
我明白了!
“第二种变体”不是问题。之前的登录步骤会导致错误。要获得正确的登录步骤,我需要等待一秒钟,以便casperjs设置cookie。
我也改变了填写结尾发送表单的方式。使用以下登录步骤,waitForUrl()的“第二个变体”工作正确:
// Type and send login Form
casper.wait(1000,function(){
this.fill('.tl_login_form', {
username: "admin",
password: "pass#"
},true);
});
此外,以下警告消失了!所以这可能意味着,每当你收到这个警告并且你不知道为什么时,去检查你的饼干:
[warning] [phantom] Loading resource failed with status=fail: http://mytestdomain.de