【问题标题】:How to use setTimeout in CasperJS如何在 CasperJS 中使用 setTimeout
【发布时间】:2017-08-01 23:58:19
【问题描述】:

在 CasperJS 中有一个名为 evaluate 的函数,它是一种进入页面并执行代码的方法,就像您使用浏览器控制台一样,如果我使用 setTimeout、setInterval 或其他异步函数,它不会像预期的那样工作。

StackOverflow 中的一些提问使用了等待函数,但是在evaluate 里面不能使用wait 函数。我需要使用 setTimeout,因为我正在抓取一个包含许多页面的网格,所以当我切换到下一页时,我需要等待几秒钟,这就是问题所在

【问题讨论】:

  • 但这在评估函数中不起作用
  • 如果打开下一页,任何运行的东西都会被处理掉,包括你的超时处理程序。这就是为什么抓取/导航过程的管理是在页面上下文之外而不是在内部完成的。你必须有不同的想法。
  • 你是对的 Artjom,谢谢,好吧,我不知道该怎么处理这个问题,因为我不再需要 casperjs 来解决问题,我刚刚发现“pupperteer”它没有评估方法中的异步函数有问题

标签: casperjs


【解决方案1】:

您不能通过页面 DOM 环境延迟 CasperJS 环境。

换句话说,您不能在casper.evaluate() 中使用setTimeout() 来延迟您的CasperJS 程序。

最好使用以下 CasperJS 函数之一来延迟您的程序:

查看下图,以更好地了解两种不同环境的工作原理:

图片来源:CasperJS Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多