2015-09-10 3 views
1

Я хочу, чтобы реализовать что-то вроде этого:Как сделать PhantomJS ждать конкретных условий на странице

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"); 
    }); 
}, 

Как я могу реализовать функцию сна, и есть петля в то время?

ответ

3

В 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"); 
}); 
Смежные вопросы