0

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

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

4

1 回答 1

0

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

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

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

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

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

于 2018-10-16T13:22:32.450 回答