Я не думаю, что это строго бесконечная прокрутка, но это было лучшее, что я мог подумать, что сравнивается с тем, что я вижу.Использование транспортира для проверки бесконечной прокрутки
В любом случае мы используем ng-сетку для отображения данных в таблице. У нас есть примерно 170 элементов (строк) для отображения. когда мы используем ng-grid, он создает ретранслятор. Когда я проверяю этот ретранслятор из браузера, его ограничивают до 35 элементов и, когда вы прокручиваете список вниз, вы начинаете терять верхние строки из dom, а новые строки добавляются снизу и т. Д. (Следовательно, почему я не думаю, что его строго бесконечная прокрутка, так как обычно просто добавляется больше строк)
Просто так, что в доме всегда есть 35 'ng-repeat=row in rendered rows'
элементов, независимо от того, как далеко вы прокрутили вниз.
Это здорово, пока не дойдет до тестирования. Мне нужно получить текст для каждого элемента в списке, но использование element.all(by.binding('item.name'))
или by.repeater или by.css не помогает, поскольку на странице есть только 35 элементов.
Теперь, к моему вопросу, как я могу сделать так, чтобы я мог захватить все 170 элементов как объект, который я могу затем перебрать, чтобы захватить текст и сохранить его как массив?
на других страницах, где у нас есть менее 35 наименований, я использовал привязку для создания объекта, а затем используя 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 и веб-тестировании, поэтому, если я не понимаю смысла, потому что я использую неправильную терминологию или что-то еще, дайте мне знать, и я попытаюсь объяснить более четко.
Да, это то, что я думаю, что мне придется уйти в отставку, эта часть в основном проверяет правильность порядка сортировки и, соответственно, меняет ее, я просто использую эту логику на других страницах и немного ленив , но я думаю, что вы правы, я буду проверять, что первые несколько строк находятся в правильном порядке в соответствии с выбранным порядком сортировки, и когда я приступаю к фактической проверке ответа api, я буду оценивать привязку, спасибо. отметив правильный ответ, потому что, хотя я не хотел, чтобы я в идеале хотел, что вы предлагаете, это то, что я собираюсь реализовать. – Sirk