超时问题可能是 browser.sleep() 和 browser.waitForAngular 的结果吗?
Can the time out issue be the consequence of browser.sleep() and browser.waitForAngular?
在量角器脚本中,我总是遇到超时问题,即使我放了一个很大的 time out jasmine interval
、allscripttimeout
...
在某些地方,我不得不等到元素出现,就像在主页中一样,直到 url 完全加载。
超时问题可以是
的后果吗
- browser.sleep(time_ms);
- browser.waitForAngular();
如果是这样,我该如何解决这个问题?
谢谢,
是的,它们可能是 -- browser.sleep()
只有在您的睡眠时间超过您的 Jasmine 超时间隔(默认为 30 秒)时才会超时。
browser.waitForAngular()
会自动应用于 Protractor 的每个 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 的功能来避免显式 browser.sleep()
的功能,从而在非 Angular 应用程序上无缝地创建和执行多种辅助方法。例如,下面的代码暂停测试执行,直到 isPresent
returns 为真(或直到超过我指定的 timeout
失败)
Util.prototype.waitForElementPresent = function (el, time) {
var timeout = time || 0,
return browser.wait(function() {
return el.isPresent();
}, timeout)
};
在量角器脚本中,我总是遇到超时问题,即使我放了一个很大的 time out jasmine interval
、allscripttimeout
...
在某些地方,我不得不等到元素出现,就像在主页中一样,直到 url 完全加载。
超时问题可以是
的后果吗- browser.sleep(time_ms);
- browser.waitForAngular();
如果是这样,我该如何解决这个问题?
谢谢,
是的,它们可能是 -- browser.sleep()
只有在您的睡眠时间超过您的 Jasmine 超时间隔(默认为 30 秒)时才会超时。
browser.waitForAngular()
会自动应用于 Protractor 的每个 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 的功能来避免显式 browser.sleep()
的功能,从而在非 Angular 应用程序上无缝地创建和执行多种辅助方法。例如,下面的代码暂停测试执行,直到 isPresent
returns 为真(或直到超过我指定的 timeout
失败)
Util.prototype.waitForElementPresent = function (el, time) {
var timeout = time || 0,
return browser.wait(function() {
return el.isPresent();
}, timeout)
};