TypeError: undefined не является ошибкой конструктора (оценивается как «casper.done ()») - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь очистить значение атрибута href от всех ссылок на видео на странице YouTube после прохождения поискового запроса.

var casper = require('casper').create();
var links;

function getLinks() {
    var links = document.querySelectorAll('div#contents div#dismissable a#thumbnail');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('href')
    });
}

casper.start('https://www.youtube.com/results?search_query=a');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});

Также есть

 div#contents div#dismissable a#thumbnail 

правильный путь для очистки атрибута href каждого тега видео.

когда я запускаю этот код, я получаю сообщение об ошибке

TypeError: undefined не является конструктором (оценка 'casper.done ()')

C: / Пользователи / rohit / Рабочий стол / Соскоб-коды / phantomjs: /code/test.js: 24

C: / Пользователи / rohit / Рабочий стол / Соскребая коды / phantomjs: /platform/casper.js: 423 в checkStep

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

casper.done(); устарел и больше не нужен в скриптах, см. вопрос , просто удалите его из скрипта.

0 голосов
/ 27 июня 2018

Я не уверен, что эта строка:

casper.then(function () {
    links = this.evaluate(getLinks);
});

Должно быть

casper.then(function () {
    links = this.evaluate(getLinks());
});

или

casper.then(function () {
    links = this.evaluate(function(){
        getLinks();
    });
});
...