2016-02-13 88 views
1

不執行我能夠獲得與下面的計數值:for循環量角器

element.all(by.options('type as type for type in types')).then(function(elems){ 
    return elems.length; 
}) 
.then(function(count){ 
    cnt = count; 
}); 

然後後面我想在使用cnt for循環,我也用封閉代碼:

for(var x = 1;x < cnt; x++){ 
    search_options(x); 
} 

function test(y){ 
    console.log('input'+y); 
} 

function search_options(input){ 
    it('tess', function(){ 
     test(input); 

    }); 
} 

問題是for不執行。

任何提示或建議,指導表示讚賞或指出任何錯誤。 我已閱讀關於IIFE,但我發現大多數樣本使用陣列,我相信'cnt'已解決

不幸的是,我不得不使用for循環。 '每個'都不適合。

回答

1

問題是cnt只能在控制流程機制解決承諾時設置。 for循環將在之前執行

取而代之的是,cnt的承諾,在您的測試解決它:

cnt = element.all(by.options('type as type for type in types')).count(); 

cnt.then(function (actualCount) { 
    for(var x = 1; x < actualCount; x++){ 
     search_options(x); 
    } 
}); 

另見:Using protractor with loops

而且,我不能完全肯定,如果動態地創建it s此方式將實際工作,這裏有一些相關的主題:

+0

嗨,THX一堆,我會嘗試一下,讓你知道它是如何發生的。 – edm

+0

嗨Alecxe,謝謝你的幫助。在'search_options(x)'中有幾條語句,其中一條不執行/ resolve:'code' element.all(by.options('type as type for type in types'))。count()。then (function(e){ \te [input] .click(); }); '代碼'任何幫助或反饋表示讚賞。 – edm

+0

@edmond好,很難說,因爲我沒有辦法重現你的問題。你確定循環應該從1開始而不是0?謝謝。 – alecxe