如何让 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");
});
我想实现这样的事情:
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");
});