각도기를 사용하여 Angular2 앱의 비헤이비어 테스트를 작성하고 있습니다. , 나는 비동기/새로운 구문을 기다리고 있습니다. 이 문제는 나를 멈추게했다. 누군가가 메서드에서 Typescript 오류 Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.
을 얻는 이유와 해결 방법을 설명 할 수 있습니까?각도기 'await`을 사용하여 element(). getAttribute()를 실행하면 오류가 발생합니다.' 'await'피연산자 유형이 유효한 약속이어야합니다 ... "
이미지의 너비를 확인하여 이미지가 표시되는지 확인하려고하는 다음과 같은 간단한 각도기 사양이 있습니다.
은 여기 내 E2E-spec.ts 파일에서 발췌 한 것입니다 :
import { LoginPage, Layout } from '../page_objects';
describe('Login page',() => {
it('Should have the logo in the footer', async() => {
await LoginPage.navigateTo();
await expect(Layout.isFooterLogoPresent).toBe(true);
})
});
그리고 여기에 문제의 로고 이미지에 대한 가시성을 가지고 내 레이아웃 페이지 개체에서 미리보기입니다. 오류를 일으키는 await element(...).getAttribute(...)
체인이있는 줄.
static get isFooterLogoPresent() {
return element(by.css('.content-footer img')).getAttribute('naturalWidth') // naturalWidth attr is 0 if image is missing
.then(imgWidth => imgWidth > 0);
}
을 BTW, 나는 타입 스크립트 2.3.2와 각도기 5.2.0을 사용하고 있습니다 : (작동)
import { browser, element, by } from 'protractor/globals';
export class Layout {
static get isFooterLogoPresent() {
return (async() => { // <-- this wrapping is necessary to use async/await in getter method
return await element(by.css('.content-footer img')).getAttribute('naturalWidth') > 0; // <-- PROBLEM HERE
})
}
}
다음 약속 기반의 구문은 내가 대체하기 위해 노력하고있어입니다. 내가 가지고있는 모든 지혜에 감사드립니다. 감사!
돌출기 유형 정의 파일에 문제가 있습니다. 그걸 왜 사용하고 있니? –
이전 제어 흐름을 사용하여 오래 걸리는지 확인하십시오. https://github.com/angular/protractor/tree/master/exampleTypescript/asyncAwait –
Ah @MadaraUchiha, 나는 각도기에 대한 특정 타이코트 편의 시설이 없습니다. 내 package.json devDependencies, 또는 뭔가 다른'@ types/protractor' 필요합니까? (그러한 패키지는 존재하지만, 1 년 동안 업데이트되지 않았고 다운로드 속도가 없어서 일반적인 해결책이라고 할 수 있습니다.) 그리고 감사합니다 Florent B; 네, 분도기 제어 플로가 제 각도기 구성에서 꺼져 있습니다. –