NightmareJs + Jquery返回空的JSON响应

时间:2018-10-14 23:15:29

标签: javascript jquery dom nightmare ruby-paranoia

我正在尝试处理测试工具,例如噩梦,幻影等。并且似乎被一些基本的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 :(得分:0)

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

有一些Ajax数据,并且在进行抓取时仅在此刻出现。或者,选择器实际上是错误的。

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

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

还要通过将代码放在实际浏览器的console.log中,确保代码实际上返回了数据。