JS в функции оценки не может быть выполнена - PullRequest
1 голос
/ 29 февраля 2020

Я новичок здесь. Когда я пытаюсь использовать casper js .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 голосов
/ 16 марта 2020

метод document.getElementsByClassName() возвращает массив в результате. Итак, если вы хотите получить первый элемент DOM с классом gLFyf gsfi (даже если он только один), вы должны назвать его следующим образом:

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