Загрузка обещания в массив

73
8

У меня есть массив имен, который отображается для консоли следующим образом:

myLists.count().then(function(count) {
console.log(count);
for (var i = 0; i < count; i++) {
browser.executeScript("arguments[0].scrollIntoView();", myLists.get(i).getWebElement());
myLists.get(i).getText().then(function(text) {
console.log(text);
});
}
});

На моей странице имена могут быть отсортированы по возрастанию или убыванию, если вы выберете опцию фильтра. Я хотел бы прочитать массив myLists в массив переменных, чтобы я мог изменить порядок и сравнить его при фильтрации. Я не слишком уверен, как это сделать, поскольку я новичок в angularjs, и мой код java/js явно не будет работать здесь.

спросил(а) 2015-08-11T21:13:00+03:00 5 лет, 5 месяцев назад
1
Решение
61

Из вашего вопроса я понимаю, что вы уже можете прочитать массив myLists и распечатать вывод на консоли. Чтобы скопировать его в другой массив, вам нужно всего лишь скопировать массив myLists в массив переменных, а затем отсортировать их. Вот пример кода ниже -

var varArray; //declare variable array
myLists.map(function(myListArray){
return myListArray.getText().then(function(mylist){
return mylist;
});
}).then(function(mylist){

//copy myLists array into varArray
varArray = mylist;

//Sort the variable array in ascending order use the below function
varArray = varArray.sort();
expect(varArray).toEqual(mylist); //check for the equality of array

//Reverse sort variable array in descending order
varArray = varArray.reverse();
expect(varArray).toEqual(mylist); //check for the equality of array
});

Оба метода reverse() и sort() представляют собой встроенные функции javascript. Однако используйте сортировку перед обратным, поскольку метод reverse() просто меняет порядок элементов в массиве.

Чтобы прокрутить страницу к определенному элементу, используйте приведенную ниже команду javascript -

var ele = yourElement;
var eleLoc;
ele.getLocation().then(function(loc){
eleLoc = loc; //get the element location in a variable
});
//Scroll to the element location
browser.executeScript('window.scrollTo('+eleLoc.x+','+eleLoc.y+');')
.then(function(){
//try getting the text here
});

Надеюсь это поможет.

ответил(а) 2015-08-12T10:24:00+03:00 5 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема