Casperjs和waitForUrl()等待下一页

时间:2016-11-03 13:35:10

标签: javascript testing automation phantomjs casperjs

我想使用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');
    });

1 个答案:

答案 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