javascript - CasperJS 每 x 秒检查一个页面,直到满足条件

标签 javascript casperjs

我想在 CasperJS 中每 x(可配置)秒检查一次页面。如果存在某个页面元素,则脚本将在退出之前继续执行一些额外的步骤。否则它会继续每 x 秒检查一次。可以使用什么代码构造来实现此目的?

该任务正在检查特定 eBay 商店是否存在(很少列出的)商品。问题本质上是如何构造一个与 CasperJS Promise 兼容的 while 循环。这将需要刷新页面。

最佳答案

由于 CasperJS 的步骤函数(then*wait*)是异步的,并且 JavaScript 没有阻塞 sleep 函数,因此使用递归很容易解决。

function check(){
    if (this.getHTML().indexOf('some item') !== -1) {
        this.echo("found");
    } else {
        this.wait(x*1000).thenOpen(url).then(check);
    }
}

casper.start(url, check).run();

另一种方法是使用setInterval,但是当你使用它时,你会脱离CasperJS的控制流。您还必须阻止 CasperJS 退出。这是通过将回调传递给 run (可以为空)来完成的。

casper.start(url, function(){
    setInterval(function(){
        casper.thenOpen(url, function(){
            if (this.getHTML().indexOf('some item') !== -1) {
                this.echo("found");
                this.exit();
            }
        });
    }, x*1000);
}).run(function(){});

关于javascript - CasperJS 每 x 秒检查一个页面,直到满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770438/

相关文章:

javascript - 使用 CasperJS 计算 iFrame 中的每个元素

javascript - 在 PhantomJS 上禁用 LocalStorage 以进行干净测试?

javascript - Node 配置中的多个 RabbitMQ 或其他后端服务器

javascript - 填充同一页面上的第二个下拉列表

javascript - 使用 CasperJS 将源代码转储到本地文件中

javascript - Phantomjs/Casperjs 现在不工作网站检测机器人

javascript - Casperjs 事件的 resource.received 上下文中的资源是什么?

javascript - 是否可以将依赖于 jQuery 的库 'chessboard.js' 与 React 一起使用?

javascript - 使用 JSX 设置复选框默认状态的正确方法

javascript - 通过使用apply调用带有参数列表的构造函数来实例化一个对象?