Загрузка обещания в массив
У меня есть массив имен, который отображается для консоли следующим образом:
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 явно не будет работать здесь.
Из вашего вопроса я понимаю, что вы уже можете прочитать массив 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
});
Надеюсь это поможет.
- Вопросы
- Protractor
- Загрузка обещания в массив