【问题标题】:NightmareJs + Jquery return empty JSON responseNightmareJs + Jquery 返回空的 JSON 响应
【发布时间】:2018-10-14 23:15:29
【问题描述】:

我正在尝试处理测试工具,例如噩梦、幻象等。似乎被一些基本的 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" } ]

为什么会发生这种情况?有什么想法吗?

【问题讨论】:

    标签: javascript jquery dom nightmare ruby-paranoia


    【解决方案1】:

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

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

    代替具体的数字,使用.wait等待一个目标选择器,

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-09
      • 2017-09-23
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多