Py学习  »  Jquery

噩梦js+jquery返回空的json响应

Illia Panchenko • 4 年前 • 288 次点击  

我试图处理测试工具,同样的噩梦,幻影等,似乎停留在一些基本的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" } ]

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46452
 
288 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Md. Abu Taher
Reply   •   1 楼
Md. Abu Taher    5 年前

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

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

使用 .wait 要等待目标选择器,

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

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