在我的测试中,我需要等待页面加载才能继续。 waitForSelector
和waitForText
由于某种原因无法正常工作,虽然我可以使用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
无法找到它。
答案 0 :(得分:0)
了解为什么waitForSelector
和waitForText
无法正常工作会很有帮助。他们超时吗?他们没有找到所需的选择器或文本吗?
如果他们超时,我建议改变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循环等待标记的更多信息: