【问题标题】:the JS in evaluate function can't been executed评估函数中的 JS 无法执行
【发布时间】:2020-02-29 11:03:44
【问题描述】:

我是新来的。当我尝试使用 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 是正确的。

谁能帮我告诉我为什么会这样?提前致谢!

【问题讨论】:

    标签: javascript casperjs evaluate


    【解决方案1】:

    document.getElementsByClassName() 方法返回一个数组作为结果。所以,如果你想获取第一个带有 gLFyf gsfi 类的 DOM 元素(即使只有一个),你应该这样调用它:

    document.getElementsByClassName("gLFyf gsfi")[0].value = "google"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多