如何等待满载CasperJS的页面

时间:2017-05-19 23:06:32

标签: npm tdd casperjs wait

我正在尝试使用CasperJS中的accounts数组登录我的网站。

casper.start()
    .then(function() {
        accounts.forEach(function(account) {
            casper.thenOpen('http://mywebsite/login', function() {
                casper.fill('form.form-type1', account, true);
                casper.waitForSelector(".widgetContainer-widget-title", function() {
                    var elemsCount= this.evaluate(function() {
                        var elem= $('.widget-personal');
                        return elem.length;
                    });
                    this.echo(surveysCount + ' elemsCount ' + account['username'] + '\n');
                });
            });
        });
    });

casper.run(function() {
    this.echo('----------- Donenzo, enjoy! ------------\n');
    this.exit();
});

现在,代码工作正常,但返回的数字始终为0,因为当widgetContainer-widget-title完全呈现时,widget-personal尚未就绪,因此在该时间点找不到任何元素所以返回0,这是因为我的网站是一个Angular应用程序,很遗憾在与数据库通信时有延迟。有没有想过如何等待页面完全呈现以应用测试?

1 个答案:

答案 0 :(得分:1)

[ANSWER]

我通过等待.widget-personal元素本身而不是它的父元素来解决它。这是一个丑陋的解决方法,但它有效,然后我抓住超时引发的错误,如:casper.waitForSelector, timeout and error handling