我有以下的測試(用於brievity的緣故,我已經刪除了頁面對象):量角器:遍歷選項工作,如果調試,但沒有如果沒有
element(by.model("elc.search.placeOfBirth")) //this is a select
element(by.model("elc.search.placeOfBirth")).all(by.tagName("option")).then(function(options) {
for(var i = 0; i < options.length; i++) {
options[i].getText().then(function(text) {
if(text !== "---") {
element(by.model("elc.search.placeOfBirth")).sendKeys(text);
var firstRow = element.all(by.repeater("employee in elc.filtered")).first();
firstRow.all(by.tagName("td")).then(function(cells) {
expect(cells[4].getText()).toBe(text);
});
var lastRow = element.all(by.repeater("employee in elc.filtered")).last();
lastRow.all(by.tagName("td")).then(function(cells) {
expect(cells[4].getText()).toBe(text);
});
}
});
}
});
讓我解釋這裏發生了什麼。我有一張桌子和一個上面的選擇框。該表的第5列與選擇組合框有關,我在表格的ng-repeat中使用的數組將通過組合框中的值進行過濾。我想在這裏做的是去查看組合框中的值,選擇一個特定的值並確保該表在第一行和最後一行中具有該值。
如果我但browser.debugger()
在循環中,這工作和測試通過,但是,如果我不調試測試似乎太快,我的表不會更新得足夠快,測試失敗。我猜這是因爲承諾沒有解決,代碼仍在運行,但我不確定我在等待什麼諾言,因爲我也試圖在我之後立即輸入.then(function() {...}
將密鑰發送到組合框。
儘管當我將它提取到一個單獨的函數中時它看起來會變慢,但我的組合框只能獲得第一次以此方式發送的鍵並忽略其他值(我添加了一個console.log以確保不同的文本值在那裏)。任何想法爲什麼組合框忽略發送更多的密鑰? 此外,爲什麼代碼在我將其提取到函數中時起作用,它會產生什麼不同? – user2352164
從我所知道的情況來看,第二次調用sendkeys時實際上並不會刪除第一次發送的密鑰。這會導致問題,因爲我無法清除()實際的選擇框。有什麼建議麼? – user2352164
@ user2352164您必須手動清除文本框或組合框值。只要你輸入新的東西,它就會增加現有的價值。爲了除去現有數據,在輸入新數據之前,在函數結尾處包含一個'element(by.model(「elc.search.placeOfBirth」))。clear()'命令。希望它有幫助 –