Почему мое обещание не разрешается при использовании async / await с nightmarejs? - PullRequest
0 голосов
/ 01 января 2019

Использование последней версии Nightmarejs.Когда я запускаю этот код, он просто зависает.Цель состоит в том, чтобы просто взять элемент и посмотреть, есть ли у него href.

var hasHref = async function(nightmare) {
    var selector = '.pagination > ul > li.active + li > a'
    try {
        var hasHref = await nightmare.evaluate((selector) => {
            return document.querySelector(selector).hasAttribute('href')
        }, selector)

        return hasHref;
    } catch(e) {
        console.error(e);
        nightmare.end()
    }
}

const nightmare = Nightmare({ show: true })
nightmare.goto(mysite)
hrefBool = hasHref(nightmare)
console.log(hrefBool)
nightmare.wait(5000).end()

1 Ответ

0 голосов
/ 01 января 2019

Я должен предположить, что вы определили nightmare и mysite соответственно.Тогда единственная проблема в том, что если селектор не найдет совпадение, вы будете пытаться получить hasAttribute ноль.Вместо этого вы могли бы написать:

const element = document.querySelector(selector);
return element ? element.hasAttribute('href') : false;

В противном случае код работает для меня, поэтому, если у вас все еще есть проблемы, вам, возможно, придется сообщить некоторые дополнительные сведения о вашей настройке.

...