2016-03-22 2 views
0

Ich habe Probleme, einen bestimmten Code außerhalb eines Tests in eine Funktion zu verschieben, die einen Wert zurückgeben muss.nightwatch.js Rückgabewert von der Funktion außerhalb eines Tests

Hier ist ein Teil meines Code für die Testdatei

function getCountOfTopics(browser){ 
 
    var count; 
 
    browser.getText('@sumTopics', 
 
     function(result){ 
 
      count = result.value; 
 
      console.log(result.value); 
 
     } 
 
    ); 
 
    return count; 
 
}; 
 

 
module.exports = {  
 
    
 
    'Create article' : function(browser){ 
 
     var noOfThreadsByInlineCode, noOfThreadsByFunction; 
 
     
 
     browser.getText('@sumTopics', 
 
      function(result){ 
 
       noOfThreadsByInlineCode = result.value; 
 
      } 
 
     ); 
 

 
     noOfThreadsByFunction = getCountOfTopics(browser); 
 

 
     browser.end(); 
 
    } 
 
}

nun die Variable noOfThreadsByInlineCode in der Tat wird den Wert in dem DOM, aber die Variable noOfThreadsByFunction ist nicht definiert. Die Konsole druckt tatsächlich den richtigen Wert, so dass die Funktion den richtigen Wert aus dem DOM erhält.

Ich würde gerne Hilfe bei der Aktualisierung der Funktion, so dass ich den Wert zurückgegeben bekomme.

+0

könnten Sie this.getText anstelle von browser.getText ausprobieren? – anasarbescu

Antwort

0

Sie kehren Variable ‚count‘ außerhalb des Callback, das heißt why.You einen Blick dieses Thema nehmen How to return value from an asynchronous callback function?

function getCountOfTopics(browser){ 
var count; 
browser.getText('@sumTopics', 
    function(result){ 
     count = result.value; 
     console.log(result.value); 
     /// result.value is available in this callback. 
    } 
); 

Was wollen Sie mit dem ‚Wert‘ zu tun?

ps: erinnere mich nicht an custom_command.Ich denke, es ist sehr hilfreich für dieses Problem.