2017-09-19 9 views
-1

문제가 있습니다. app.e2e-spec.ts에서 로그인 페이지로 이동합니다. 파일에 이라는 메소드가 있습니다. SignIn 버튼을 클릭하면 대시 보드 페이지의 제목이 반환됩니다. 마치 로그인에 실패했습니다. 그러나 그는이 메시지를 가져옵니다이 페이지에서로케이터 각도기를 찾을 수 없습니다

should be able to login 
- 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, h2) 

을하는 요소는 다음과 같습니다

<h2 _ngcontent-c5 = ""> Dashboard API </h2> 

app.e2e-spec.ts

it('should show login page',() => { 
page.navigateToHome(); 
page.maximizeWindow(); 
expect(page.getLoginBoxTitle()).toEqual('Sign In'); 
}); 

it('should be able to login',() => { 
page.navigateToHome(); 
page.login(); 
expect(page.getPageTitle()).toEqual('Dashboard API'); 
page.navigateToDashboard(); 
}); 

app.po.ts

login() { 
element(by.name('username')).sendKeys('[email protected]'); 
element(by.name('password')).sendKeys('test123'); 
element(by.buttonText('SignIn')).click(); 
} 

loginIfNotLoggedIn() { 
if (element.all(by.css('.login-box')).length > 0) { 
    this.login(); 
} else { 
    console.info('Already logged in'); 
} 
} 

getLoginBoxTitle() { 
return element(by.css('h2')).getText(); 
} 

getPageTitle() { 
return element 
    .all(by.css('h2')) 
    .last() 
    .getText(); 
} 

대시 보드 .e2e-spec.ts

it('should get api status',() => { 
login.browserSleep(); 
page.navigateToDashboard(); 
login.loginIfNotLoggedIn(); 
page.getStatusAPI(); 
page.navigateToApplications(); 
}); 

답변

0

각도기 5와 각도 2/4 후에 각도기에서 비동기 동작이 변경됩니다.

당신은 로그인 방법을 호출하는 동안 다음, 당신이 말을해야 당신이

async login(name: string, pwd: string) { 
    await this.username.sendKeys(name); 
    await this.password.sendKeys(pwd); 
    await this.loginButton.click(); 
    return browser.wait(protractor.ExpectedConditions.not(protractor.ExpectedConditions.urlContains('returnUrl'))); 
} 

을하여 테스트를 시작하기 전에 브라우저에 각도로드 될 때까지 기다려야 각도 알려 async ANS에게 await 양식을 사용할 필요가 await login()