什么是Protractor测试Angular载荷前显示的内容的方法

时间:2015-11-16 09:43:47

标签: angularjs testing protractor e2e-testing

我认为通知用户基于Angular的应用程序正在加载是一种很好的做法。我的意思是,在Angular 2的情况下,它是例如<view>Loading...</view>。我确信在AngularJS(v1)中还有一种方法可以做同样的事情。因此,我认为应该有一种方法可以使用Protractor来测试应用程序的这一方面,因为它is是“AngularJS应用程序的端到端测试框架”。

对我而言suggested有一种方法可以做到这一点,我应该在这里问一下。那么,请你帮我找到他心中Nick的方法吗?它不一定必须与Angular 2兼容。 AngularJS(v1)方法就足够了,因为我相信它一旦移植到量角器就会被移植。

这个问题似乎与Protractor: test loading state类似,但与OP不同,我想确保在测试完成之前没有加载Angular应用程序,所以我想应该有一种方法可以暂停/停止加载申请(但我可能错了)。

2 个答案:

答案 0 :(得分:1)

我通常会避免测试这样的事情,因为它们往往非常脆弱。除非有一些测试装载机的要求,否则我不会这样做。

您可以使用browser.ignoreSynchronization = true 而不是等待在页面上加载角度,然后断言您的加载器在那里。

唯一的问题是你要努力确保角度没有加载。除非你手动引导并构建某种延迟或“无引导”触发器,但是开始危及应用程序只是为了测试加载状态,否则没有很好的方法可以阻止你的角度应用程序引导。

答案 1 :(得分:1)

只是要添加到@ Nick的观点,你肯定需要在量角器和角度关闭之间转换同步并设置browser.ignoreSynchronization = true;

然后,您可以/应该添加explicit wait以等待加载指示符(例如,它可能是微调图像)到become visible

var EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(element(by.id("#loading"))), 5000, "Loading indicator has not become visible");

超时错误意味着加载元素(在这种情况下是id="loading"的元素)在5秒内没有显示。

测试完成后,不要忘记重新打开同步:

browser.ignoreSynchronization = false;