如何让PhantomJS等待页面上的一个特定条件[英] How to make PhantomJS wait for a specific condition on the page

问题描述

我想实现这样的事情:

function(){
     var ua = page.evaluate(function() {
         while (document.getElementById("td_details87").parentElement.children[11].textContent == "Running" ) {
              console.log ("running.....");
              sleep(10000); //10 seconds
         }; 
         console.log ("DONE");
     });
},

如何实现休眠功能,有没有while循环?

推荐答案

JavaScript 中没有阻塞 sleep() 函数.如果你想睡觉,那么你必须使用一些像 setTimeout(callback, timeout) 这样的异步函数.

PhantomJS 的示例文件夹中有一个函数可以执行您正在尝试执行的操作.它是 waitFor(testFx, onReady[, timeout]).它的工作原理是一遍又一遍地调用测试函数,直到它返回一个真实值.

在你的情况下,看起来像这样:

waitFor(function _test(){
    return page.evaluate(function() {
        return document.getElementById("td_details87").parentElement.children[11].textContent == "Running"; 
    });
}, function _onReady(){
    console.log ("DONE");
});

本文地址:https://www.itbaoku.cn/post/1740118.html