NightmareJs + Jquery return 空 JSON 响应

NightmareJs + Jquery return empty JSON response

我正在尝试处理类似噩梦、幻影等测试工具。而且似乎受困于一些基本的 DOM 操作。我在这里使用 jquery 以便以后使用 $().parent() 方法。我已经尝试了集合中所有没有用的可能选择器。它只有 returns 一些数据。它实际完全存在于页面上的位置。

   ....
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()
    ....

它 returns 实际不存在的空字段:

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

为什么会这样?有什么想法吗?

您不知道页面会在 4 秒内完全加载。

要么有一些 Ajax 数据,并且在您抓取时它只出现在那个时刻。或者,选择器实际上是错误的。

而不是特定的数字,使用.wait等待目标选择器,

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

还要确保代码确实 returns 数据,方法是将其放在实际浏览器的 console.log 上。