繁体   English   中英

等待页面加载到CasperJS中

[英]Waiting for a page to load in CasperJS

在测试中,我需要等待页面加载后才能继续。 由于某些原因, waitForSelectorwaitForText无法正常工作,尽管我只能使用wait(value) ,但我不得不考虑服务器可能变慢的时间,并使该值比我想要的大得多。 所以我想做一个while循环,告诉系统每次返回“ someCSSpath”在页面上不存在时要等待500毫秒。 有什么方法可以做到这一点(也许是“ 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找不到它。

知道为什么waitForSelectorwaitForText完全waitForSelector将很有帮助。 他们超时了吗? 他们找不到所需的选择器或文本吗?

如果他们超时,我建议更改Casper将等待的默认时间,直到它发送超时消息为止。 casper.options在开始测试之前使用casper.options更改此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循环。 如果服务器出了问题,则测试将超时,并且您会知道出了问题。

请查看此问题以获取有关Java的更多信息,而while循环等待标志:

Javascript-等到flag = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM