2016-05-10 54 views
0

我正在處理角應用自動化,我已經寫了一個通用函數,需要在我的測試中的多個地方調用以獲取動態生成的表單ID。此功能總是返回我{[PromiseStatus]: 「待定」}「。]錯誤需要瀏覽器url substring功能

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

    } 
}; 

現在,這個功能正在pageobject文件用得到該元素定位

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()

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

謝謝alecxe ...此作品!我意識到Promise沒有得到解決,但沒有做出正確的修改! – AnuragT