在量角器中查找UI元素并不一致。使用localhost而不是服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在量角器中查找UI元素并不一致。使用localhost而不是服务器相关的知识,希望对你有一定的参考价值。

这是我使用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);

以上是关于在量角器中查找UI元素并不一致。使用localhost而不是服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用量角器返回此复选框元素?

带角覆盖的量角器/硒,其他元素会收到点击

使用量角器如何检查是不是在 UI 中删除了选项(例如“Ping 测试”)

如何检查列表中的任何一个元素是不是显示在量角器中

使用量角器在 Shadow-root 中定位元素

如何在javascript中打印元素异步推送到它的数组?