如何让 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])。它通过一遍又一遍地调用测试函数来工作,直到它 returns 一个真实的值。

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

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