登录后无法在主页上找到任何元素。
场景:点击个人资料名称/图标&点击退出按钮
it('Signout', function() {
//tried with following code
//browser.waitForAngularEnabled(true);
//locator below
//var profileIcon=element(by.model('user'));
common.btnClk(homepage.profileIcon);
common.btnClk(homepage.FCS_signoutbtn);
browser.close();
});
解决方法: 当主页刷新时browser.refresh();然后才能找到元素。 如果没有这种解决方法,请建议解决方案。
日志:
[31m- [39m[31mFailed: Timed out waiting for asynchronous Angular tasks to finish after 120 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.model("user").
The following tasks were pending:
- $timeout: function (){$rootScope.authenticated=false;$cookies.remove("access_token");$cookies.remove("organizationId");$cookies.remove("authenticated");$cookies.remove("user_infos");$cookies.remove("user_profile_infos");$cookies.remove("user_depts");ChatSocket.disconnect();$state.go('core.login',{},{reload:true});$rootScope.options={position:'toast-top-right',type:'error',iconClass:{name:'error'},timeout:'5000',extendedTimeout:'1000',html:false,closeButton:true,tapToDismiss:true,closeHtml:'<i class="fa fa-times"></i>'};var msg="Your Token is Expired!";$rootScope.openToast("Session Timeout",msg);}[39m
Executed 2 of 2 specs[31m (1 FAILED)[39m in 2 mins 55 secs.
[12:57:53] I/launcher - 0 instance(s) of WebDriver still running
[12:57:53] I/launcher - chrome #01 failed 1 test(s)
[12:57:53] I/launcher - overall: 1 failed spec(s)
[12:57:53] E/launcher - Process exited with error code 1
其他信息:尝试使用browser.ignoreSynchronization = true; &安培;位于xpath,它的工作。但我想用角度方法进行测试。 **网站是有角度的网站** 试过: browser.driver.manage()。window()。setSize(1280,1024); browser.ignoreSynchronization = false; allScriptsTimeout:160000, defaultTimeoutInterval:160000
请建议任何解决方案。
答案 0 :(得分:1)
您的网页上似乎有$timeout
待处理。
由于刷新类型可以解决问题,因此可能存在一个与登录/身份验证和页面更改相关的行为背后的错误(时间问题的类型,可能会使前一个承诺得不到解决)。
如果是这种情况,可能需要将ControlFlow清空&#34;作为最后一个操作,在加载新页面之前。也许你的开发者可以提供帮助。
作为解决方法,请尝试
browser.waitForAngularEnabled(false); //could empty Protractors/Seleniums ChangeDetection on the ControlFlow
browser.waitForAngularEnabled(true); //will observe the ControlFlow for new promises again.
尽管如此,这是一个很长的镜头而且我有点猜测,你可能想尝试一下。