8
在我的測試中,我需要檢查所有預期值是否存在於選擇框中。我花了一段時間,但我終於創造了這個輔助函數:量角器獲取所有選擇框(選項)值
function getSelectValues(elementFinder)
{
var defer = protractor.promise.defer(),
promise = defer.promise;
elementFinder.all(by.tagName('option')).then(function(elements)
{
var values = [],
elemCount = elements.length,
counter = 0;
elements.forEach(function(element)
{
element.getAttribute('value').then(function(optionValue)
{
counter += 1;
values.push(optionValue);
if(counter === elemCount)
{
defer.fulfill(values);
}
});
})
});
return promise;
}
它的工作原理,但看起來十分可怕的我。有沒有更好的方法來做到這一點?
編輯:
兩個小時的閱讀文檔後,我得到了我的輔助函數簡化爲:
getSelectValues: function(elementFinder)
{
return elementFinder.all(by.tagName('option')).map(function(elem, index)
{
return elem.getAttribute('value');
});
}
profileType = element(by.model('regObj.profileType'));
expect(getSelectValues(profileType)).toEqual(['', 'aa', 'bb', 'cc']);
幹得好!你可以添加它作爲你自己問題的答案。 – 2014-09-30 22:20:16
'如何提高我的代碼'的問題不是真正的stackoverflow方式:s不會downvote,偉大的結果:) – nilsK 2014-10-01 20:01:32
也許這個問題沒有明確說明,但我認爲必須有更好的方式來做到這一點。我沒有在文檔或東西中找到一些方法:)謝謝:) – Ralphz 2014-10-02 13:05:02