Можете ли вы показать мне свой код, который на самом деле вызывает API?
waitForResource фактически просто ждет ресурсов, которые вызываются самой страницей или вручную. Это может быть сделано, чтобы реализовать некий цикл, в котором вы будете называть API каждые 5 секунд, и утверждают, что API будет реагировать с 200 или 201.
редактировать:
Прежде вам нужно знать, сколько времени если вы ожидаете, что ресурс будет в вашей базе данных. Возьмите максимальное время, которое вы рассчитали. Затем напишите функцию, которая будет перебирать API через что-то вроде этого.
var condition = false;
function loop(index,iteration){
if(condition) {
return;
}
else if(index >= iteration) {
casper.test.fail('Record not found');
return;
}
casper.then(function(){
this.thenOpen('http://www.webpage.com/api/record/543',function(response){
if(response.status==200) {
condition = true;
this.test.pass("Record found");
}
this.echo(response.status);
})
})
.then(function(){
loop.call(this,index+1,iteration)
})
}
casper.test.begin('Test for record',1,function suite(test){
casper.start()
loop.call(this, 0, 20);
casper.run(function(){
test.done();
})
})
Если вам нужно использовать звонки из-за высокого трафика, просто используйте setTimeout.
Возможный дубликат [CasperJS waitForResource: как получить ресурс, который я ждал] (http://stackoverflow.com/questions/24559234/casperjs-waitforresource-how-to-get-the-resource-ive- ждали) –
Я работаю с Жаном-Дэвидом.Из того, что мы понимаем, waitForResource будет ждать, пока данный ресурс будет доступен текущему экземпляру Phantom, следуя предыдущему шагу навигации. Мы пытаемся добиться чего-то другого: мы хотим зациклиться на http до тех пор, пока он не вернет 200 вместо 404. Нам тяжело это делать с CasperJs, учитывая его асинхронный характер. Как мы можем это сделать? – Spiff