我已经看过很多次人们建议使用它:
browser.ignoreSynchronization=true; // or false
Run Code Online (Sandbox Code Playgroud)
但我不明白我们为什么需要它?
我正在尝试针对我自己的AngularJS代码运行本教程.我无法通过第一次测试.任何从我的页面提取任何信息的尝试都会收到此错误:
Error: Error while waiting for Protractor to sync with the page: "[ng:test] no injector found for element argument to getTestability\nhttp://errors.angularjs.org/1.3.8/ng/test"
Stacktrace:
Error: Error while waiting for Protractor to sync with the page: "[ng:test] no injector found for element argument to getTestability\nhttp://errors.angularjs.org/1.3.8/ng/test"
at Error (<anonymous>)
==== async task ====
Protractor.waitForAngular()
==== async task ====
Asynchronous test function: it()
Run Code Online (Sandbox Code Playgroud)
Does anyone have a Protractor tutorial that shows you how to target your own code, rather than someone else's code? …
问题描述:
我们最近在Protractor端到端测试中打开应用程序中的一个页面时遇到了这个臭名昭着的错误:
失败:超时等待异步Angular任务在50秒后完成.这可能是因为当前页面不是Angular应用程序.
这browser.get("/some/page/");在我们的一个测试中的调用中发生:
describe("Test", function () {
beforeEach(function () {
browser.get("/some/page/");
});
it("should test something", function () {
// ...
});
)};
Run Code Online (Sandbox Code Playgroud)
并且,我们的案例有点奇怪的是,我们的Angular Web应用程序中的任何其他页面都没有抛出错误 - Protractor与Angular同步而没有任何问题.ng-app所有页面的位置相同的东西都是相同的 - ng-app在根html标签上定义:
<html class="ng-scope" lang="en-us" ng-app="myApp" ng-strict-di="">
Run Code Online (Sandbox Code Playgroud)
行为是一致的 - 每次我们导航到这个页面时browser.get(),我们都会收到此错误.每当我们导航到我们的应用程序中的任何其他页面时,同步工作.
请注意,当然,我们可以关闭此页面的同步并将其视为非角度,但这只能被视为一种解决方法.
问题:
还有什么可以导致量角器到角度同步失败?我们应该检查什么?
而且,一般来说,在Protractor中调试同步问题的推荐方法是什么?
使用当前最新的Protractor 5.5.1,Angular 1.5.6.
NgZone中hasPendingMacrotasks或hasPendingMicrotasks有什么区别?文档似乎缺乏信息.我所知道的是他们返回一个布尔值.但究竟他们究竟要检查什么?什么是微观任务?什么被认为是宏观任务?
class NgZone {
static isInAngularZone() : boolean
static assertInAngularZone() : void
static assertNotInAngularZone() : void
constructor({enableLongStackTrace = false}: any)
run(fn: () => any) : any
runGuarded(fn: () => any) : any
runOutsideAngular(fn: () => any) : any
onUnstable : EventEmitter<any>
onMicrotaskEmpty : EventEmitter<any>
onStable : EventEmitter<any>
onError : EventEmitter<any>
isStable : boolean
hasPendingMicrotasks : boolean
hasPendingMacrotasks : boolean
}
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是,micro指的是来自特定类的任务,而macro可能指的是与整个应用程序相关的任务.有人可以验证或确认这个假设吗?或者说明具体细节?
NgZone文件:
https://angular.io/docs/ts/latest/api/core/index/NgZone-class.html#!#hasPendingMicrotasks-anchor
我随机收到错误:
失败:等待 Protractor 与页面同步时出错:“angularJS 可测试性和 Angular 可测试性都未定义。这可能是因为这是一个非角度页面,或者因为您的测试涉及客户端导航,这可能会干扰 Protractor 的引导。有关详细信息,请参阅https://github.com/angular/protractor/issues/2643 ”
跑步
$ ng e2e --webdriverUpdate=false --devServerTarget=
Run Code Online (Sandbox Code Playgroud)
在我的 spec.ts 文件中,我有以下 2 个测试,第一个总是有效,第二个随机失败并出现上述错误。
beforeEach(async () => {
myPage = new MyPage();
browser.get('my-page');
});
it('should work', async () => {
console.log('should work');
expect(true).toBeTruthy();
});
it('should display the title', async () => {
const title = await $('my-title-selector').getText();
expect(title).toEqual('My-Title');
});
Run Code Online (Sandbox Code Playgroud)
这是 MyPage 页面对象:
import { $, $$ } from 'protractor';
export class MyPage {
title = $('my-title-selector');
}
Run Code Online (Sandbox Code Playgroud)
这是我的 …
在量角器中运行多个测试时遇到问题:60010秒后等待异步脚本结果超时在登录脚本之后执行的教程脚本代码: 
这里我在我的配置文件中使用的代码在另一个问题中提出的A代码,但它没有解决我的问题!
onPrepare: function() {
return browser.getProcessedConfig().then(function(config) {
var browserName = config.capabilities.browserName;
browser.manage().timeouts().setScriptTimeout(60000);
});
Run Code Online (Sandbox Code Playgroud)
PS:即使我为元素放置了错误的位置,我也有超时错误,而且找不到这个元素!好像那行代码"点击进入教程按钮"永远不会被执行
</div></md-card-content> </md-card><!-- end ngIf: !expandChart --> </div> </div> </div></md-content> </div></div> <!-- Google Analytics: change UA-XXXXX-X to be your site's ID --> <!--<script>--> <!--!function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){--> <!--(A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),--> <!--r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)--> <!--}(window,document,'script','https://www.google-analytics.com/analytics.js','ga');--> <!--ga('create', 'UA-XXXXX-X');--> <!--ga('send', 'pageview');--> <!--</script>--> <script src="scripts/vendor.js"></script> <script src="cordova.js"></script> <script src="scripts/scripts.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script> <div class="introjs-overlay" style="top: 0;bottom: 0; left: 0;right: 0;position: fixed;opacity: 0.8;"></div><div class="introjs-helperLayer " style="width: 538px; height:366px; top:64px;left: 195px;"></div><div …Run Code Online (Sandbox Code Playgroud) protractor ×5
angularjs ×3
javascript ×3
angular ×2
end-to-end ×2
jasmine ×2
ajax ×1
appium ×1
selenium ×1
testing ×1