【发布时间】:2016-05-05 19:06:52
【问题描述】:
我使用量角器来测试一个角度应用程序,但我遇到了一个奇怪的问题。偶尔或最近以来,量角器一直在显着停止/减速。
我缩小了问题范围,可以看到简单的someElement.getText().then(...) 需要很长时间才能解决;所以.then(...) 部分永远不会执行;但是,放置 allScriptTimeOut: 500 000 会等到该承诺最终解决,这需要大约 6 分钟才能解决(非常不方便!)。
同样,使用allScriptTimeOut: 500 000 等待最终会起作用,但需要的时间太长。
另一个解决这种极端减速的方法是告诉 protractor,嘿 Protractor,不要等待 Angular 完成所有承诺和异步后台任务,然后继续,不要等待 angular,这适用于 browser.ignoreSynchronization = true;
但是,将此布尔值设置为 true 是有问题的,因为它基本上将您的整个 Angular 应用程序视为非 Angular 应用程序,并且从不等待 Angular 并因此导致 Protractor 出现各种问题。另一个复杂之处是我们的应用程序不是完全有角度的,有些页面是无角度的;无论如何;这是我的问题:
有没有办法连接到控制流队列并基本上轮询或查询队列,只要任何入队的操作花费超过 11 秒的时间,控制流队列告诉我吗?如果是,设置browser.ignoreSynchronization = true;类似 sudo 的代码如下所示:
protractor.controlflow(function(delay){
if(delay > 11 sec){
browser.ignoreSynchronization = true;
}else{
browser.ignoreSynchronization = false;
}
});
这在语法上可能没有意义,但我对这个概念比正确编写的 javascript 更感兴趣;
再次感谢,希望这足以理解我的问题
更新:
我再次检查,基本上,Protractor 能够单击大多数按钮,但随后它会到达屏幕底部的另一个按钮,但我首先滚动以显示按钮,然后尝试单击它它只需要 6 分钟,然后它终于点击了那个按钮。
为什么要花这么长时间才能最终成功点击该按钮?
【问题讨论】:
-
您的网站/页面是否经常发出 ajax 请求?检查 Chrome 开发者工具中的网络标签。这可能是量角器非常慢的原因之一。
-
我查了一下,大约有 10 个 ajax 请求;状态一切正常;最后一个字节的时间也是正常的;任何其他想法可能导致量角器减慢这么多?
标签: javascript angularjs selenium-webdriver protractor e2e-testing