我剛剛更新到量角器2.0,我在我的項目中發現了一些問題。量角器2.0不等待sendKeys()。承諾問題
expect()
失敗,因爲給定的文本是''
它似乎預計在sendKeys()
完成之前完成。
elem.clear().sendKeys('Message');
expect(elem.getAttribute('value')).toBe('Message');
我得到的錯誤是:
預計'是 '信息'。
即更新爲量角器2.0工作之前,我知道之一beaking changes is related with then() and promises:
要使更新和刪除混亂,這消除了 元件(),然後發揮功能,除非有。一個行動結果。這個 函數是完全不必要的,因爲它總是會自動解析爲 ,但是刪除操作可能會導致重大更改。換句話說,一個 ElementFinder現在不再是一個承諾,直到一個動作被調用爲 。
但在我的項目的其他測試中,它的工作原理,我認爲這個問題可能與我正在做一個循環內期望有關。這裏整個代碼
describe('message', function() {
it('Should fill out visible message fields', function(){
getDisplayedElements(element.all(by.model('message')))
.then(function(displayedMessageInputs){
_.each(displayedMessageInputs, function(elem){
elem.clear().sendKeys('Message');
expect(elem.getAttribute('value')).toBe('Message');
});
});
});
});
如果我使用那麼()函數它的作品,但是...我不喜歡它!
elem.clear().sendKeys('Message')
.then(function(){
return elem.getAttribute('value');
})
.then(function(inputValue){
expect(inputValue).toBe('Message');
});
你看到Chrome和Firefox之間的行爲有什麼不同嗎? (它在Chrome中失敗,但在Firefox中按預期工作?) – dlongley