Кошмар условного ожидания ()
Я пытаюсь сканировать веб-страницу с помощью Nightmare, но хочу дождаться#someelem
присутствовать, только если он действительно существует. В противном случае я хочу, чтобы Кошмар продолжался. Как это можно сделать с помощью.wait()
?
Я не могу использовать.wait(ms)
, С помощью.wait(selector)
означает, что Nightmare будет продолжать ждать, пока элемент не появится, но если на странице никогда не будет этого элемента, Nightmare будет продолжать ждать вечно.
Последний вариант заключается в использовании.wait(fn)
, И я попробовал что-то вроде этого
.wait(function(cheerio) {
var $ = cheerio.load(document.body.outerHTML);
var attempt = 0;
function doEval() {
if ( $('#elem').length > 0 ) {
return true;
}
else {
attempt++;
if ( attempt < 10 ) {
setTimeout(doEval,2000); //This seems iffy.
}
else {
return true;
}
}
}
return doEval();
},cheerio)
Итак, подождите и попробуйте снова (до порога), и если элемент не найден, то просто продолжайте. Код кажется неправильным вокруг setTimeout, потому что.wait
делается в области видимости браузера.
Заранее спасибо!