在CasperJS中有一个名为evaluate的函数,它是一种进入页面并执行代码的方式,就像使用浏览器控制台一样,如果我使用setTimeout,setInterval或其他异步函数,它就不像指定的那样工作。
StackOverflow中的一些问题使用了wait函数,但wait函数不能在evaluate中使用。我需要使用setTimeout,因为我正在抓取一个包含许多页面的网格,所以当我换到下一页时,我需要等待几秒钟,这就是问题
答案 0 :(得分:0)
您不能通过Page DOM环境延迟CasperJS环境。
换句话说,您不能在setTimeout()
内使用casper.evaluate()
来延迟CasperJS程序。
最好使用以下CasperJS函数之一来延迟程序:
casper.wait()
casper.waitFor()
casper.waitForAlert()
casper.waitForExec()
casper.waitForPopup()
casper.waitForResource()
casper.waitForUrl()
casper.waitForSelector()
casper.waitWhileSelector()
casper.waitForSelectorTextChange()
casper.waitForText()
casper.waitUntilVisible()
casper.waitWhileVisible()
请看下面的图表,以更好地了解这两种不同的环境如何工作:
图片来源: CasperJS Documentation