Npm 如何等待页面完全加载CasperJS

Npm 如何等待页面完全加载CasperJS,npm,tdd,casperjs,wait,Npm,Tdd,Casperjs,Wait,我试图使用CasperJS中的帐户数组登录我的网站 casper.start() .then(function() { accounts.forEach(function(account) { casper.thenOpen('http://mywebsite/login', function() { casper.fill('form.form-type1', account, true);

我试图使用CasperJS中的
帐户数组登录我的网站

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小部件标题
完全呈现时,
小部件个人
尚未准备就绪,因此,它无法在该时间点找到任何元素,因此返回0,这是因为我的网站是一个角度应用程序,遗憾的是,在与DB通信时有延迟。知道如何等到页面完全呈现后再应用测试吗?

[答案]


我通过等待
.widget personal
元素本身而不是它的父元素来解决这个问题。这是一个难看的解决方法,但它很有效,然后我捕获了超时引发的错误,如所述:

我还尝试了
waitUntilVisible()
,用于我所需的选择器,但超时了,无法超过5秒的超时时间