量角器没有看到快速变化

时间:2017-02-20 18:36:56

标签: promise jasmine protractor

这是我的量角器测试:

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);通过测试,第二次没有通过测试,即使错误消息从UI中消失。似乎Protractor没有察觉到快速的变化;但是,它应该是因为它在承诺中。你对此有任何解释吗?

1 个答案:

答案 0 :(得分: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);