如何在 CasperJS 中使用 setTimeout
How to use setTimeout in CasperJS
在 CasperJS 中有一个名为 evaluate 的函数,它是一种进入页面并执行代码的方式,就好像您正在使用浏览器控制台一样,如果我使用 setTimeout、setInterval 或其他异步函数,它不会按预期工作。
Whosebug中的一些提问使用了wait函数,但是wait函数不能在evaluate中使用。我需要使用 setTimeout,因为我正在抓取包含许多页面的网格,所以当我切换到下一页时,我需要等待几秒钟,这就是问题所在
您不能通过页面 DOM 环境延迟 CasperJS 环境。
换句话说,您不能使用 setTimeout()
inside 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
在 CasperJS 中有一个名为 evaluate 的函数,它是一种进入页面并执行代码的方式,就好像您正在使用浏览器控制台一样,如果我使用 setTimeout、setInterval 或其他异步函数,它不会按预期工作。
Whosebug中的一些提问使用了wait函数,但是wait函数不能在evaluate中使用。我需要使用 setTimeout,因为我正在抓取包含许多页面的网格,所以当我切换到下一页时,我需要等待几秒钟,这就是问题所在
您不能通过页面 DOM 环境延迟 CasperJS 环境。
换句话说,您不能使用 setTimeout()
inside 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()
查看下图以更好地理解这两种不同环境的工作原理: