求助:Angular 4 E2E测试需关闭同步或标记非Angular应用,否则报错
解决Protractor运行Angular 4 E2E测试时的超时问题
问题背景
当你尝试运行Angular 4应用的E2E测试时,会发现必须手动关闭Protractor的Angular同步机制才能正常执行测试——如果不做这个设置,测试会直接失败,抛出如下超时错误:
失败:等待异步Angular任务完成超时,耗时11秒。这可能是因为当前页面不是Angular应用。
可行解决方案
你只需要在测试代码中添加以下任意一行配置,就能解决这个问题:
- 针对旧版本的Protractor,可以使用:
browser.ignoreSynchronization = true; - 针对新版本的Protractor(更推荐这种写法):
browser.waitForAngularEnabled(false);
为什么需要这么做?
Protractor默认会自动等待Angular应用中的所有异步操作(比如API请求、组件变更检测)完成后,才会执行下一个测试步骤。但如果你的测试场景里包含非Angular页面,或者Angular应用的初始化流程让Protractor无法正确识别Angular的运行状态,就会触发这个超时错误。通过关闭Angular同步,Protractor会切换到普通的Selenium模式,不再等待Angular的异步任务,测试就能正常执行了。
内容的提问来源于stack exchange,提问作者Peder Maas-Olsen
相关产品推荐
相关产品推荐

