我正在使用zombie.js,我需要点击一个按钮,直到该按钮在"样式"中有一些文字。属性(每次点击后按钮都会改变)。
我使用这种结构。
browser
.visit(url)
.then(function() {
console.log("Scraping ...");
...
})
.then(function() {
var button = browser.query([SELECTOR]);
if(button != null)
{
if(button.outerHTML.indexOf([TEXT_TO_SEEK]) == -1)
{
console.log("Click more button");
return browser.pressButton([SELECTOR]);
}
}
return;
})
它有效一次,但是我想要执行n次,直到条件满足为止。
答案 0 :(得分:0)
这个递归对我有用:
browser
.visit(url)
.then(function () {
console.log('Scraping ...');
//...
})
.then(function () {
var maxClicks = 10;
return (function pressIt() {
if (maxClicks-- <= 0) {
throw new Error('Usless button');
}
var button = browser.query([SELECTOR]);
if (!button) {
throw new Error('There is no button');
}
if (button.outerHTML.indexOf([TEXT_TO_SEEK]) == -1) {
console.log('Click more button');
return browser.pressButton([SELECTOR]).then(pressIt);
} else {
return 'This button rocks';
}
})();
}).then(console.log, console.error);
输出:
"Scraping ..."
"Click more button"
"Click more button"
"Click more button"
"This button rocks"