2016-12-13 3 views
0

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

Я пытался делать это, чтобы получить ожидаемый текст соответствует тому, что я хочу:

expect(element.all(by.repeater('n in [].constructor(product.config.num_streamers) track by $index')).get(1).all(by.model('name.value')).getAttribute('value')).toEqual("testtext"); 

Моя проблема его показ объекта в квадратные скобки, а не только текст в кавычках. Это мое несоответствующее исключение .: Ожидаемый ['testtext'] равный 'testtext'.

Единственная причина, по которой это не удается, состоит в том, что есть открытые и закрывающие скобки с пробелом. Может ли кто-нибудь помочь мне найти решение и объяснить, почему появляются скобки?

+2

Я думаю, что это может быть ваша проблема .Все (by.model ('name.value')). getAttribute ('value')) Я верю, что он возвращает ElementArrayFinder, так что он не работает, как вы ожидаете. Раньше вы делаете .get (1), чтобы указать второй в массиве. но вы не делаете этого в следующий раз, когда используете element.all – BarretV

ответ

3

Вы звоните getText() на массив элементов (который называется ElementArrayFinder в транспортир), и она возвращает обещание, которое разрешает в массив текстов всех согласующих элементов.

Так как вы на самом деле нужен один элемент, используйте .element вместо .all:

expect(element.all(by.repeater('n in [].constructor(product.config.num_streamers) track by $index')).get(1).element(by.model('name.value')).getAttribute('value')).toEqual("testtext"); 

Дополнительные примечания:

  • вместо toEqual(), вы могли бы также использоваться toContain() Искателя
  • вы дон 't нужна часть track by в by.repeater() - она ​​автоматически пропущена Protractor
  • , чтобы сделать код более читаемым, объявить элемент вне согласовани - или, еще лучше, применить Page Object pattern:

    var elm = element.all(by.repeater('n in [].constructor(product.config.num_streamers)')).get(1).element(by.model('name.value')); 
    expect(elm.getAttribute('value')).toEqual("testtext"); 
    
Смежные вопросы