这是我使用expect(element(by.id('title')).getAttribute('value')).toMatch('Sample Title')
的代码
在本地机器上它工作得非常好,在服务器上没有出现以下错误。
Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds. This may be because the current page is not an Angular application. Please see the FAQ for more details: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular
While waiting for element with locator - Locator: By(css selector, *[id="title"])
而且令人惊讶的是,当我单独执行这些测试时,这些测试有时会在服
添加到问题。我观察到量角器能够在测试中只找到一个元素,并且所有剩余的元素都会被忽略,如上所述。
这可能是什么解决方案?
这可能是应用程序问题。有时会发生角度从未向量角器报告所有任务都已完成,因此您可能会遇到此超时错误。
http://www.protractortest.org/#/timeouts
AngularJS如果您的AngularJS应用程序不断轮询$ timeout或$ http,Protractor将无限期地等待并超时。您应该将$ interval用于连续轮询的任何内容(在Angular 1.2rc3中引入)。
Angular对于Angular应用程序,Protractor将等到Angular Zone稳定。这意味着长时间运行的异步操作将阻止您的测试继续进行。要解决此问题,请在Angular区域外运行这些任务。例如:
this.ngZone.runOutsideAngular(()=> {setTimeout(()=> {//此处的更改不会传播到您的视图中.this.ngZone.run(()=> {//在ngZone内部运行以触发更改检测。});},REALLY_LONG_DELAY);});作为这两个选项之一的替代方法,您可以禁用等待Angular,请参阅下文。
正如在错误中所说,似乎你的应用程序不是一个角度。不是吗?
如果是这样,您需要使用它:
browser.waitForAngularEnabled(false);