我试图抓取一个使用梦魇的网页,但只有在实际存在时才想要等待#someelem
存在。否则,我想让梦魇继续前进。这怎么可以用.wait()
来完成?梦魇有条件的等待()
我不能使用.wait(ms)
。使用.wait(selector)
意味着梦魇将持续等待,直到元素出现,但如果页面永远不会有这个元素,梦魇将永远等待。
最后一个选项是使用.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
在浏览器范围内完成。
提前致谢!
梦魇医生说:等到'arn1,arg2,...'返回'true'页面的'fn'评估。所以,'wait'会一直等到'true'返回。是的,你是对的,它并不是真的。 – user