我正在尝试处理测试工具,例如噩梦,幻影等。并且似乎被一些基本的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" } ]
为什么会发生这种情况?有什么想法吗?
答案 0 :(得分:0)
您不知道页面会在4秒内完全加载。
有一些Ajax数据,并且在进行抓取时仅在此刻出现。或者,选择器实际上是错误的。
使用.wait
而不是特定数字来等待目标选择器
.wait(4000)
.wait('.view-wrapper .events--list > li')
还要通过将代码放在实际浏览器的console.log中,确保代码实际上返回了数据。