NightmareJs + Jquery возвращает пустой JSON-ответ - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь разобраться с инструментами тестирования, такими как кошмар, фантом и т. Д. И, похоже, застрял с некоторыми базовыми манипуляциями с DOM.Я использую здесь jquery для последующего использования методов $ (). Parent ().Я уже перепробовал все возможные селекторы, которые идут в коллекции без толку.Он возвращает только некоторые фрагменты данных.Где он фактически полностью существует на странице.

   ....
nightmare
    .goto(link)
    .inject('js', 'jquery-2.2.4.min.js')
    .wait()
    .evaluate( () => {
        $('.sport--head:not(.folding--open)').click()
    })
    .wait(4000)
    .evaluate( () => {
        let events = [];
        $('.view-wrapper .events--list > li').each( (i, elem) => {
            let event = {
                'name' : $(elem).text()
            }
            events.push(event);
        });
        let data = JSON.stringify(events, null, '\t');
        return data;
    })
    .end()
    ....

Возвращает пустые поля там, где их на самом деле нет:

[{ "name": "" }, { "name": "" }, { "name": "" }, { "name": "contents" } ]

Почему это могло произойти?Есть идеи?

1 Ответ

0 голосов
/ 16 октября 2018

Вы не знаете, страницы загружаются полностью в течение 4 секунд.

Либо есть какие-то данные Ajax, и пока вы копируете их, они появляются только в этот момент.Или селектор на самом деле неправильный.

Вместо определенного числа используйте .wait для ожидания целевого селектора,

.wait(4000)
.wait('.view-wrapper .events--list > li')

Также убедитесь, что код на самом деле возвращает данныеположить его на console.log вашего фактического браузера.

...