我不認爲這是完全無限的滾動,但它是我能想到的與我所看到的相比最好的。使用量角器測試無限滾動
無論如何,我們正在使用ng-grid在表格中顯示數據。我們有大約170個項目(行)可以顯示。當我們使用ng-grid時,它會創建一箇中繼器。當我從瀏覽器中檢查這個中繼器時,它限制爲35個項目,並且當你向下滾動列表時,你開始丟失dom中的頂行,並且新行添加在底部等(因此爲什麼我不認爲它嚴格無限滾動,因爲通常只會增加更多行)
就這樣,我清楚無論您向下滾動多遠都會在dom中存在35個'ng-repeat=row in rendered rows'
元素。
直到涉及到測試時,這都很棒。我需要獲取列表中每個項目的文本,但使用element.all(by.binding('item.name'))
或by.repeater或by.css並不會有幫助,因爲頁面上只存在35個項目。
現在到我的問題,我如何使它,以便我可以抓住所有170項作爲一個對象,然後我可以迭代通過抓取文本和存儲爲數組?
在其他頁面上,我們有少於35個項目iv只是使用綁定來創建一個對象,然後使用async.js遍歷每一行並獲取文本(參見下面的示例,它是修改後的提取我知道它可能是行不通的,因爲它是,它只是給你參考)
//column data contains only 35 rows, i need all 170.
var columnData = element.all(by.binding('row.entity.name'))
, colDataTextArr = []
//prevOrderArray gets created elsewhere
, prevOrderArray = ['item1', 'item2'... 'item 169', 'item 170'];
function(columnData, colDataTextArr, prevOrderArray){
columnData.then(function(colData){
//using async to go over each row
async.eachSeries(colData, function(colDataRow, nRow){
//get the text for the current async row
colDataRow.getText().then(function(colDataText){
//add each rows text to an array
colDataTextArr.push(colDataText);
nRow()
});
}, function(err){
if(err){
console.log('Failed to process a row')
}else{
//perform the expect
return expect(colDataTextArr).toEqual(prevOrderArray);
}
});
});
}
順便說一句,據我所知,通過170行迭代和存儲陣列中的文字是不是很有效,所以如果有一個更好的方式來做到這一點,我接受建議。
我對JavaScript和Web測試還是比較新的,所以如果我沒有意義,因爲我使用錯誤的術語或任何讓我知道,我會嘗試解釋更清楚。
是的,這是我認爲我將不得不辭職的一種,這部分主要是測試排序順序是否正確並相應地改變,它只是我在其他頁面上使用這種邏輯,並且正在有點懶惰,但我認爲你是對的,我會測試,前幾行按照選擇的排序順序是正確的順序,當我來實際檢查api響應我會評估綁定,謝謝。標記爲正確答案,因爲雖然不是我想要實現的理想解決方案。 – Sirk 2014-11-05 09:25:19