2016-05-10 5 views
0

私は、動的に生成されているフォームIDを取得するためにテストで複数の場所で呼び出す必要がある共通の関数を記述した角型アプリケーションの自動化に取り組んでいます。この関数は常に私を返している{[[PromiseStatus]]: "保留"}。 "]エラー関数内のブラウザのURLサブ文字列が必要

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); 
    }); 

    } 
}; 

は今、この関数は、取得するためにPageオブジェクトファイル内で使用されています要素ロケータ

の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); 
    } 

最後に、私のテストスクリプトでこの関数を呼び出すと、エラーが発生します。

テストスクリプト:

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

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

    }); 

例外が登場:私は間違ってそれをやっているところ

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) 

誰かがこれで私を助けることができますか?

答えて

0

これは、getFormId()関数がpromiseを返すためです。あなたは約束が解決されるに値を必要とするので、あなたは.then()を使用する必要があります。これは動作します... alecxe

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

感謝を!私は何とかプロミスは解決されていないが、正しく変更していないことを知っていた! – AnuragT

関連する問題