我在CasperJS中编写了函数来在TextBox上设置数据,然后单击按钮,然后从页面中提取数据。
var casper = require('casper').create({
verbose: false,
pageSettings: {
loadImages: false,
loadPlugins: false
}
});
casper.start("www.testsite.com", function(){
casper.thenEvaluate(function(){
document.getElementsByClassName('inputfield')[0].value="set data";//google.com
document.querySelector('form[name="single_check_form"]').submit();
}).then(function(){
var data = this.evaluate(function(){
return document.getElementsByTagName('tr')[13].childNodes[3].innerHTML.replace("- ","").replace("<br>","");
});
casper.echo("Data found : "+data);
});
});
上面的函数是工作文件,在点击后我得到'字符串'或'空字符串'但在某些情况下我得到'空'作为结果。
那么,如何循环直到我获取数据?
答案 0 :(得分:0)
你应该使用递归,因为CasperJS步骤可以嵌套。
var data = null;
function getData(){
casper.thenOpen("www.testsite.com").thenEvaluate(function(){
document.getElementsByClassName('inputfield')[0].value="set data";//google.com
document.querySelector('form[name="single_check_form"]').submit();
}).then(function(){
data = this.evaluate(function(){
return document.getElementsByTagName('tr')[13].childNodes[3].innerHTML.replace("- ","").replace("<br>","");
});
if (data == null) {
getData();
}
});
}
casper.start().then(getData).then(function(){
casper.echo("Data found : "+data);
}).run();