2017-03-25 1 views
1

로그인하려는 사용자가 회사의 고객인지 확인하는 것입니다. 나는 로그인하는 사람이 관리자이고 관리자가 아닌 경우 로그인 화면으로 리디렉션하는 경우 관리자 ID를 표시하는 div가 있습니다. 나는 로그인을 시도하는 계정 아이디가 고객인지 관리자인지 조건 적으로 테스트하고 싶다. 테스트가 사실로 해결되면 모든 것이 잘되고 약속은 해결되지만 실패하면 테스트가 중단됩니다 (대기가 진행될 때까지 응답을 기다림).성공 대신 부울 값 반환은 각도기에서 실패 함

.then(browser.executeScript('return window.find("isCompany:true");')), 
.then(function() { 
     return expect(browser.wait(EC.textToBePresentInElement(element(by.id("url")), qr), wait)).toBe(true); 
    }, function() { 
      .... 
    }); 

답변

1

난 당신이 browser.wait()에 의해 반환 약속을 해결하기 위해 필요가 있다고 생각 :

browser.wait(EC.textToBePresentInElement(element(by.id("isCompany")), 'true'), wait).then(function() { 
    // user is a customer 
}, function() { 
    // user is not a customer 
}); 
+0

아니의 경우 테스트가 사실로 끝나면 모든 것이 잘되고 약속은 사실이지만 실패하면 테스트가 중단됩니다 (대기가 끝날 때까지 진정한 응답을 기다립니다). – SomeoneElse

0

내가 도우미 함수가 ExpectedConditions.textToBePresentInElement의 값을 반환하도록 설정하는 경우가 쉬울 것 같아요. 그렇다면 약속을 묶는 것에 대해 걱정할 필요가 없습니다. 나는 당신이하고있는 것과 거의 같은 것을 이루기 위해 Utils이라는 도우미 클래스를 사용한다. 다음은 예제 유틸 클래스에서

의 내가 가진 :

function waitForElementText(element, elementText) { 
    return browser.wait(this.ec.textToBePresentInElement(element, elementText), this.timeout); 
} 

이처럼 사용하는 것이 니펫 코드를 사용하여 :, 결과는 본질적으로 같은 문제가

util.waitForElementText(element, elementText) 
    .then(function (isCompany) { 
     if(isCompany) { 
      // do something 
     } else { 
      // do something else 
     }    
}