Moviéndome entre páginas y raspando a medida que avanzo con Nightmare

Hay un sitio web que contiene una página con una lista de 25 entradas, donde cada entrada es un enlace a una página que contiene información que necesito. Quiero ir a la página de listado y luego: 1) hacer clic en el enlace a la primera entrada 2) recuperar todo el html 3) hacer clic de nuevo en la página de listado (hay un botón para esto) 4) repetir para cada otro listado

También me gustaría hacer esto de la manera más eficiente posible, lo que me han dicho significa aprovechar las promesas. Aquí está mi boceto de código, que no funciona:

var Nightmare = require('nightmare');
var nightmare = Nightmare({ openDevTools: true, show: true })
var Xray = require('x-ray');
var x = Xray();
var resultArr = [];

nightmare
.goto(hidTestURL)
.wait(2500)
.click('input[name="propertySearchOptions:advanced"]') //start navigating to listing page
.wait(2500)
.type('input[name="propertySearchOptions:streetName"]', 'Main')
.wait(2500)
.select('select[name="propertySearchOptions:recordsPerPage"]', '25')
.wait(2500)
.click('input[name="propertySearchOptions:search"]') //at listing page
.wait(2500)
.then(function(){
  nightmare
  .click('a[href^="Property.aspx?prop_id=228645"]') //first entry
  .evaluate(function(){ //retrieve info
    var resultArr = [];
    resultArr.push(document.querySelector('html').innerHTML);
  })
})

nightmare
.click('a[id="propertyHeading_searchResults"]') //return to listing page
.evaluate(function(){
  return resultArr.push(document.querySelector('html').innerHTML); retrieve listing page info to show that it returned.
})
.then(function (resultArr) {
  console.log('resultArr', resultArr);
  x(resultArr[1], 'body@html') //output listing page html
    .write('results.json');
})

Esto llega hasta la página de listado, y luego no continúa. También probé el mismo código, pero conreturn nightmare por cada uso denightmare excepto el primero. Había visto algunos ejemplos que usabanreturn, pero cuando hice esto, el código arrojó un error.

También intenté no incluir el terceronightmare (el que está después del espacio en blanco), y en su lugar intenta continuar con la vieja instancia de pesadilla yendo directamente a la.click(), pero esto también arrojó un error.

Claramente necesito ayuda con la sintaxis y la semántica de pesadilla, pero no hay mucha documentación en línea además de una lista de API. ¿Alguien sabe cómo puedo hacer que esto funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta