casperjs waitforselector如何工作?

时间:2018-06-28 22:49:41

标签: node.js phantomjs casperjs

我正在尝试编写一个打开链接的程序,然后等待特定的选择器出现。我正在使用最新版本的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);
});

}

1 个答案:

答案 0 :(得分:0)

代码似乎是正确的,我建议您使用更具体的选择器,也许是一种模式,它在HTML中显示了其他一些内容,因为它有点通用。我们可以看到HTML代码吗?