我正在尝试编写一个打开链接的程序,然后等待特定的选择器出现。我正在使用最新版本的casperjs和phantomjs。我在Mac上运行程序。为了等待我的选择器,我使用了this.waitForSelector。在大多数情况下,该功能似乎可以按预期工作,但是有时它会说选择器不在时,选择器就在那儿,然后程序尝试访问上述选择器,自然会崩溃。我无法确定我的代码是否错误,或者是否是casperjs的问题。任何见解将不胜感激,谢谢!
function addLinks(link) {
this.waitForSelector("tr a", function() {
this.echo(this.getHTML("tr a"));
this.echo("I'm sure tr a is available in the DOM");
var found = this.evaluate(searchLinks);
this.echo(found.length + " links found on " + link);
for(var x = 0;x < found.length;x++){
this.echo(found[x]);
}
links = links.concat(found);
fs.write("forever.txt", links, 'a');
next();
},function timeout() { // step to execute if check has failed
this.echo("I can't haz my screenshot.");
if(this.getHTML("span.numResults") == "(No Results)"){
this.echo("nothing doing " + curr);
next();
}
else{
curr += String(alphabet[0]);
}
this.echo("curr " + curr);
});
}
答案 0 :(得分:0)
代码似乎是正确的,我建议您使用更具体的选择器,也许是一种模式,它在HTML中显示了其他一些内容,因为它有点通用。我们可以看到HTML代码吗?