如何在噩梦中多次运行.evaluate .then

时间:2017-01-23 17:08:19

标签: javascript node.js nightmare

我试图废弃由AJAX 生成的网页。在<div class='main'>内的网页上有几个<a class='classLinks'>元素,点击其中一个元素后,在同一个<div class='main'><a class='classLinks'>元素中生成的内容将替换为一个<a class='back'>元素1}}后退按钮。

我的任务是在点击<a class='classLinks'>内的所有<div class='main'>元素后获取内容并将其写入控制台日志。 我将所有<a class='classLinks'>放入选择器数组,但问题是我不知道如何在.click, .wait, .evaluate., .click周期内运行序列“for”。

步骤是:

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;

我的代码看起来:

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);
  })

请如何处理噩梦中的循环内的多个评估?

0 个答案:

没有答案