NightmareJs + Jquery возвращает пустой JSON-ответ
Я пытаюсь разобраться с инструментами тестирования, такими как кошмар, фантом и т. Д. И, похоже, застрял с некоторыми базовыми манипуляциями с 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 ответ
Вы не знаете, страницы загружаются полностью в течение 4 секунд.
Либо есть какие-то данные Ajax, и пока вы копируете их, они появляются только в этот момент. Или селектор на самом деле не так.
Вместо определенного числа используйте .wait
ждать целевого селектора,
.wait(4000)
.wait('.view-wrapper .events--list > li')
Также убедитесь, что код на самом деле возвращает данные, поместив их в console.log вашего фактического браузера.