Espera condicional de pesadelo ()

Estou tentando rastrear uma página da Web usando o Nightmare, mas quero aguardar#someelem estar presente, apenas se ele realmente existir. Caso contrário, quero que o Nightmare siga em frente. Como isso pode ser feito usando.wait()?

Não posso usar.wait(ms). Usando.wait(selector) significa que o Nightmare continuará esperando até que o elemento esteja presente, mas se a página nunca tiver esse elemento, o Nightmare continuará esperando para sempre.

A última opção é usar.wait(fn). E eu tentei algo assim

.wait(function(cheerio) {
            var $ = cheerio.load(document.body.outerHTML);
            var attempt = 0;

            function doEval() {
                if ( $('#elem').length > 0 ) {
                    return true;
                }
                else {
                    attempt++;

                    if ( attempt < 10 ) {
                        setTimeout(doEval,2000); //This seems iffy.
                    }
                    else {
                        return true;
                    }
                }
            }

            return doEval();
        },cheerio)

Portanto, aguarde e tente novamente (até um limite) e, se o elemento não for encontrado, siga em frente. O código parece errado em relação ao setTimeout, porque.wait é feito no escopo do navegador.

Desde já, obrigado!

questionAnswers(3)

yourAnswerToTheQuestion