2017-09-21 1 views
0

Ich verwende Nightmare-Aktionen in meinem Skript. Innerhalb der Aktion verwende ich die Funktion evaluate_now. Wie kann ich die Wait-Funktion verwenden? Ich weiß, dass ich Wait-Funktion innerhalb Aktion verwenden kann, indem ich this.wait('example')
aufrufen Aber die Funktion ist innerhalb der this.evaluate_now Funktion nicht zugänglich.Wie verwende ich die Wartefunktion in Nightmare action evaluate_now?

Nightmare.action('example', function(done){ 
    this.evaluate_now(function() { 
     //do some calculation and get element id 
     var element = 'calculatedelement'; 
     activeTask.querySelector(element).click(); 
     //I have to use the wait function here 
    }   
    this.wait('body'); //wait is accessible here 
}); 

Antwort

1

Sie können keine Aktion innerhalb eines evaluate_now() verwenden und warten() ist eine Aktion in der Bibliothek (Source). Der Code, der in evaluate_now() bereitgestellt wird, wird in der Elektroneninstanz (Source) ausgeführt.

Stattdessen können Sie ein Warten erstellen, indem Sie die Funktion setTimeout() in der Callback-Funktion von evaluate_now() verwenden. Das nächste Beispiel ist eine Aktion, die prüft, ob ein Element im Ansichtsfenster sichtbar ist oder nicht.

Eine andere Möglichkeit besteht darin, einfach die wait() - Funktion aufzurufen, bevor Sie Ihre benutzerdefinierte Aktion aufrufen.

Nightmare 
    .wait('#myComponent') 
    .example(); 

dass benutzerdefinierte Aktionen mit evaluate_now Merken() begrenzt sind einige Synchron Anweisungen zu tun, und vielleicht nicht geeignet sind, um Ihren Anwendungsfall.