2016-05-10 10 views
0

Ich arbeite an eckigen App-Automatisierung, wo ich eine gemeinsame Funktion geschrieben habe, die an mehreren Stellen in meinen Tests aufgerufen werden muss, um die Form-ID, die dynamisch generiert. Diese Funktion wird mir immer wiederkehr {[[PromiseStatus]]: "pending"}. "] FehlerBrauchen Sie Browser-URL Teilstring innerhalb der Funktion

CommonFunctions.js

var common_functions = function() {  
this.getFormId = function() { 
    // var url = "http://localhost/test/#/submission/207/form/1976"; 
    return browser.getCurrentUrl().then(function(url){ 
     return url.substr(-4); 
    }); 

    } 
}; 

Nun ist diese Funktion in Pageobject-Datei verwendet wird, um zu erhalten der Elementpositionierer

Datei Pageobject:.

var general_information = function() { 
     this.street1 = function(field1) { 
     var formid = common_functions.getFormId(); 
     var street="fieldValue.street1_".concat(formid); 
     element(by.model(street)).sendKeys(field1); 
    } 

Schließlich, wenn ich diese Funktion in meinem Testskript aufrufen, erhalte ich einen Fehler.

Testskript:

it("Verify that user is able to fill values in general information", function(){ 

     general_information.street1('Street Victoria'); 
     general_information.zipCode('1004'); 

    }); 

Ausnahme erscheinen:

Failed: invalid element state: Failed to execute 'querySelectorAll' on 'Document': '[ng-model="fieldValue.street1_Promise::1833 {[[PromiseStatus]]: "pending"}"]' is not a valid selector. 
    (Session info: chrome=50.0.2661.94) 
    (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Windows NT 6.1 SP1 x86_64) 

Kann jemand mir helfen, mit dieser, wo ich es falsch mache?

Antwort

0

Das ist, weil die getFormId() Funktion eine promise zurückgibt. Und da Sie einen Wert benötigen, in die ein Versprechen gelöst ist, müssen Sie .then() verwenden:

this.street1 = function(field1) { 
    common_functions.getFormId().then(function (formid) { 
     var street = "fieldValue.street1_".concat(formid); 
     element(by.model(street)).sendKeys(field1); 
    }); 
} 
+0

Dank alecxe ... Das funktioniert !! Mir war irgendwie bewusst, dass Promise nicht gelöst wird, aber keine Änderungen vorgenommen hat !! – AnuragT

Verwandte Themen