等待在CasperJS中加载页面

时间:2015-07-20 08:36:48

标签: javascript casperjs

在我的测试中,我需要等待页面加载才能继续。 waitForSelectorwaitForText由于某种原因无法正常工作,虽然我可以使用wait(value),但我必须考虑服务器速度慢的问题。使价值远远超过我的意愿;所以我想做一个while循环告诉系统每次返回时都会等待500毫秒#someCSSpath'在页面上不存在。有没有办法做到这一点(也许是#34; casper.DoesntExist'?),或者更好的方法吗?

var css3path = "body > div.container-fluid > div:nth-child(3) > div.row.ng-scope > div:nth-child(1) > a > div";
casper.waitForSelector(css3path , function(){
    this.test.assertExists(css3path ); 
    if (casper.exists(css3path ){
        this.echo("logged in!");}
    else{
        this.echo("not logged in");
    };
});

当我使用casper.wait(6000, function(){时 而不是waitForSelector,它可以正常工作 我之前使用相同格式的waitforselector,这也有效;我认为我正在寻找的具体事情给我带来了麻烦。

另外,当我使用wait(6000,时,测试发现CSS3路径就好了;它只是waitForSelector无法找到它。

1 个答案:

答案 0 :(得分:0)

了解为什么waitForSelectorwaitForText无法正常工作会很有帮助。他们超时吗?他们没有找到所需的选择器或文本吗?

如果他们超时,我建议改变Casper等待发送超时消息的默认时间。您可以在开始测试之前使用casper.options更改此内容,如下所示:

//Set time-out to 20000 milliseconds (20 seconds)
casper.options.waitTimeout = 20000;

casper.test.begin('Begin tests', function suite(test)
{
    //Your tests go here
}

有一个超时而不是一个可能循环的while循环是很重要的。如果服务器出现问题,那么测试会超时,你就会知道出错了。

查看此问题以获取有关Javascript while循环等待标记的更多信息:

Javascript - wait until flag=true