2016-02-19 2 views
1

Я новичок в транспортировке для автоматизации приложений angularJs. Я пытаюсь выбрать один элемент из списка элементов. Я пытаюсь выполнить обработку ошибок, но ничего не работает, как я ожидал из-за обещаний.Обработка ошибок в угловом транспортирторе

В следующем коде, если я передаю недопустимое имя категории, он никогда не печатает ошибку, а переходит в часть проверки (ожидает) и сбой.

Пожалуйста, помогите мне понять это и как я могу решить эту проблему. Я пытался использовать обратный вызов, но не удачу. Я также попытался попробовать поймать и все равно не повезло. Оцените любую помощь здесь. Благодарности

this.elements = element.all(by.css('.xyz')); 
this.selectCategory = function (categoryName) { 
    this.elements.each(function (category) { 
     category.getText().then(function (text) { 
      if (text === categoryName) { 
       log.info("Selecting Category"); 
       category.click(); 
      } 
     }, function (err) { 
      log.error('error finding category ' + err); 
      throw err; 
     }); 
    }) 
}; 

ответ

1

Использование filter() и проверить, сколько элементов совпадений:

var filteredCategories = this.elements.filter(function (category) { 
    return category.getText().then(function (text) { 
     return text === categoryName; 
    }); 
}); 
expect(filteredCategories.count()).toEqual(1); 
filteredCategories.first().click(); 
+0

В моем случае использования я не выбираю элемент из раскрывающегося списка или поля выбора. У меня есть столбец элементов с именами разных категорий. Работает ли filter() в этом сценарии? – kumarvarun

+0

@VarunMukka уверен, дайте ему попробовать. – alecxe

+0

спасибо, что сработало :) – kumarvarun

1

Если вы хотите войти инвалидные случаев, вы можете сделать так.

this.selectCategory = function (categoryName) { 

    var filteredCategories = this.categoryElements.filter(function (category) { 
     return category.getText().then(function (text) { 
      return text === categoryName; 
     }) 
    }) 

    filteredCategories.count().then(logInvalidCategory) 

    expect(filteredCategories.count()).toEqual(1); 
    filteredCategories.first().click(); 
} 

function logInvalidCategory(count) { 

    if(count === 0) { 
     log.info("Invalid Category"); 
    } 
} 
Смежные вопросы