我正在使用Protractor(v 1.3.1)为Angular 1.2.26应用程序运行E2E测试。
但是有时候,测试还可以,有时候却不行。似乎有时检查是在更新显示之前完成的(或类似“同步”的问题)。我尝试了很多选择:
browser.driver.sleep
browser.executeScript('$.fx.off = true')
browser.waitForAngular()
没有成功。
与量角器进行可靠的E2E测试的最佳实践是什么?
JM。
每当我有类似的问题,我使用的是browser.wait()与“预期的条件”(在量角器1.7引入的)。通常有一组内置的期望条件就足够了,但是您可以轻松定义自定义期望条件。
browser.wait()
例如,等待 元素可见 :
var EC = protractor.ExpectedConditions; var e = element(by.id('xyz')); browser.wait(EC.visibilityOf(e), 10000); expect(e.isDisplayed()).toBeTruthy();
一些注意事项:
您可以指定一个自定义错误消息,以防不满足条件并抛出超时错误,请参阅关于等待超时错误的自定义消息:
browser.wait(EC.visibilityOf(e), 10000, "Element 'xyz' has not become visible");
您可以将其设置EC为指向的全局可用变量protractor.ExpectedConditions。将此行添加到onPrepare()您的配置中:
EC
protractor.ExpectedConditions
onPrepare()
onPrepare: function () { global.EC = protractor.ExpectedConditions;
}