2017-06-07 2 views
0

Ich folgte die Anweisung von here (Pause Befehl in der Nachtwache), um einen benutzerdefinierten Befehl, der den aktuellen verwendeten Selektor (CSS oder XPath) erhält.Nightwatch benutzerdefinierte Befehl Prototyp

Die Implementierung ruft den aktuellen Selektor ab, obwohl das Programm festsitzt, wenn der benutzerdefinierte Befehl aufgerufen wird.

browser 
    .getSelector(function (currentSelector) { 
     console.log('getSelector: ' + currentSelector); 
    }) 

Ich habe auch versucht mit „self.perform“ umschlingen wie here vorgeschlagen, leider ohne Erfolg.

GetSelector.prototype.command = function (browser, callback) { 
    browser.perform(function() { 
     callback(this.client.locateStrategy); 
    }) 
}; 

Was fehlt mir?

Danke, im voraus!

Antwort

0

"Die Signalisierung des vollständigen Ereignisses muss innerhalb einer asynchronen Aktion erfolgen" action"self.emit('complete');, nach der Nightwatch homepage.

GetSelector.prototype.command = function (cb) { 
    var self = this; 

    process.nextTick(function() { 
     cb(self.client.locateStrategy); 

     //Signaling the complete event needs to be done inside an asynchronous action. 
     self.emit('complete'); 
    }); 

    return this; 
}; 

process.nextTick stellt sicher, dass die self.emit('complete'); wird durch die nächsten Ticken der Ereignisschleife aufgerufen werden, die durch den Knoten verarbeitet werden.

Verwandte Themen