Javascript 如何运行。评估。然后在噩梦中多次运行
我试图抓取AJAX生成的网页。在Javascript 如何运行。评估。然后在噩梦中多次运行,javascript,node.js,nightmare,Javascript,Node.js,Nightmare,我试图抓取AJAX生成的网页。在内的网页上有几个元素,单击其中一个元素后,将在同一中生成内容,元素替换为一个返回按钮 我的任务是抓取单击中的所有元素后生成的内容,并将其写入控制台日志。 我将所有放入选择器数组,但问题是我不知道如何运行序列“。单击、.wait、.evaluate.,。在内单击”循环 步骤如下: goto http://example.com click on subpage get all "a" elements content = ""
内的网页上有几个
元素,单击其中一个元素后,将在同一
中生成内容,
元素替换为一个
返回按钮
我的任务是抓取单击
中的所有
元素后生成的内容,并将其写入控制台日志。
我将所有
放入选择器数组,但问题是我不知道如何运行序列“。单击、.wait、.evaluate.,。在内单击”循环
步骤如下:
goto http://example.com
click on subpage
get all "a" elements
content = ""
for (i=0; i < a.lenght; i++)
{
click on a[i]
content = content + div.innerHTML;
click on "a.back"
}
console.log content;
gotohttp://example.com
点击子页面
获取所有“a”元素
content=“”
对于(i=0;i
我的代码看起来:
var content
nightmare
.goto('http://example.com')
.wait('.firstpage')
.click('a.subpage')
.wait('.main')
.evaluate(function(){
var links = document.querySelectorAll('a.classLinks');
for (i = 0; i < links.length; ++i) {
links[i].click();
// now i need to wait for <div class='main'>
.wait('.main')
// and do evaluate again
.evaluate(function(){
//content is glogal variable
content = content + document.querySelector('div.main').innerHTML;
// and click on 'back' link becaus all a.classLinks disappeared
document.querySelector('a.back').click();
})
})
return content;
.end()
.then(function(content) {
console.log(content);
})
var内容
噩梦
后藤先生('http://example.com')
.wait(“.firstpage”)
.单击('a.子页面')
.wait(“.main”)
.评估(功能){
var links=document.querySelectorAll('a.classLinks');
对于(i=0;i
请说明如何在“恶梦中的循环”中处理多个评估?您知道如何处理吗?您可以通过在页面中存储Htmlements列表,然后使用索引运行多个评估来完成此操作。请注意,每个评估都应该在前面的then()子句中。请参阅我的答案:(屏幕截图)[