在量角器脚本中,我总是遇到超时问题,即使我放了一个大time out jasmine interval
,allscripttimeout
......
在某些地方,我不得不等到元素出现在主页中,直到网址完全加载为止。
超时问题可以是
的后果吗?如果是这样,我该如何解决这个问题?
谢谢,
答案 0 :(得分:3)
是的,他们可以 - browser.sleep()
只有在睡眠时间长于Jasmine超时间隔(默认为30秒)时才会超时。
browser.waitForAngular()
应用于每个webDriver操作,因此您无需调用它。如果这个时间已经结束,那么你的应用仍在同步。
如果花费的时间过长,这两项都会导致A Jasmine spec timed out. Resetting the WebDriver Control Flow.
跟Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
。
我不肯定你会怎么解决它 - 你有很多关于超时的问题(有充分的理由),但此时我认为你需要使用browser.ignoreSynchronization = true;
并将你的应用视为非Angular,如果你有这么多的超时问题。有些事情阻止了同步完成。
通过扩展Protractor的功能,可以在非Angular应用程序上无缝创建和执行几种辅助方法,以避免显式browser.sleep()
。例如,以下代码暂停测试执行,直到isPresent
返回true(或直到超出我指定的timeout
失败)
Util.prototype.waitForElementPresent = function (el, time) {
var timeout = time || 0,
return browser.wait(function() {
return el.isPresent();
}, timeout)
};