这是我的量角器测试:
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没有察觉到快速的变化;但是,它应该是因为它在承诺中。你对此有任何解释吗?
答案 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);