评估功能中的JS无法执行

时间:2020-02-29 11:03:44

标签: javascript casperjs evaluate

我是新来的。当我尝试使用casperjs.evaluate()执行JS时,发现事件未执行。 像

这样的代码
    casper = require("casper").create();

    casper.start("https://www.google.com/",function(){
        this.echo(this.getTitle());
        this.wait(1000);
        this.capture("homepage.png")
    });
    casper.then(function(){
        this.evaluate(function(){
            document.getElementsByClassName("gLFyf gsfi").value = "google"
        })
        this.echo(this.getTitle())
        this.wait(1000)
        this.capture("input.png")
    });

    casper.then(function(){
        var tmp = this.evaluate(function(){
            document.getElementsByClassName('gNO89b')[1].click();
        });
        this.echo(this.getTitle())
        casper.wait(1000);
        casper.capture("searchList.png");
    });


    casper.run();

“ value”和“ click”之类的事件应按我的预期执行,因此“ searchList.png”应显示“ google”的所有搜索结果,但实际上我什么也没得到。 顺便说一下,我确定“评估”功能中的JS是正确的。

有人可以告诉我为什么会发生吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

document.getElementsByClassName()方法返回一个数组作为结果。因此,如果您想使用gLFyf gsfi类(即使只有一个)来获取第一个DOM元素,则应采用以下方式进行调用:

document.getElementsByClassName("gLFyf gsfi")[0].value = "google"
相关问题