我使用量角器(v 1.3.1)为我的Angular 1.2.26应用程序运行E2E测试.
但有时候,测试是可以的,有时候不行.看来有时检查是在显示更新之前完成的(或类似“同步”问题).
我尝试很多选择:
>添加browser.driver.sleep说明,
>使用browser.executeScript禁用效果(‘$.fx.off = true’)
>添加browser.waitForAngular()指令
没有成功.
使用量角器可靠的E2E测试最佳实践是什么?
JM.
解决方法
每次我有类似的问题,我使用
browser.wait()
与
“Expected Conditions”(
introduced in protractor 1.7).有一套内置的预期条件通常足够,但您可以轻松地定义您的自定义预期条件.
例如,等待一个元素变得可见:
var EC = protractor.ExpectedConditions; var e = element(by.id('xyz')); browser.wait(EC.visibilityOf(e),10000); expect(e.isDisplayed()).toBeTruthy();
几个注释:
>您可以指定自定义错误消息,以防不能满足条件并抛出超时错误,请参见Custom message on wait timeout error:
browser.wait(EC.visibilityOf(e),10000,"Element 'xyz' has not become visible");
>您可以将EC设置为指向量角器的全局可用变量.ExpectedConditions.将此行添加到您的配置中的onPrepare():
onPrepare: function () { global.EC = protractor.ExpectedConditions; }
>作为自定义预期条件的示例,请参阅this answer