2017-02-20 5 views
1

Это мой транспортир тест:транспортир не воспринимает быстрое изменение

it("should check email validity", function(){ 
     var resetButton = element(by.id('reset-button')); 
     element(by.model('Contact.email')).sendKeys('nick'); 
     element.all(by.css('.form-control-error')).each(function (elem, index) { 
     if (index===1) { 
      expect(elem.isPresent()).toBe(true); 
      element(by.model('Contact.email')).sendKeys('@gmail.com').then(
      function(){ 
       expect(elem.isPresent()).toBe(false); 
      } 
      ) 
     } 
     }); 
    }); 

За этим кодом есть форма с некоторыми входными текстами. второй включает одно электронное письмо. form-control-error - это сообщение об ошибке, которое появляется, когда формат электронной почты неверен. В первый раз expect(elem.isPresent()).toBe(true); проходит тест, второй раз он этого не делает, даже если сообщение об ошибке исчезает из пользовательского интерфейса. Кажется, что Протрактор не воспринимает быстрое изменение; однако, это должно быть потому, что оно находится в обещании. Есть ли у вас какие-либо объяснения?

ответ

1

Вы должны сделать вещи более надежными, добавив ожидание для element to become not present ("stale") после отправки ключей:

element(by.model('Contact.email')).sendKeys('@gmail.com'); 

var EC = protractor.ExpectedConditions; 
browser.wait(EC.stalenessOf(elem), 5000); 
expect(elem.isPresent()).toBe(false); 
+0

Я получаю следующее сообщение: Ошибка: Подождите истекло после 5007ms –

+0

я нашел проблему! Я использовал ng-show вместо ng-if –