2017-09-27 6 views
0

I 현재 각도기에 대한 내 테스트 사양 중 하나에 다음 코드가 : 나는 --debug-brk--inspect 플래그를 사용하여 디버깅하는 크롬을 사용하는 경우끄는 타이밍 문제

.then(function() { 
    return button.click(); 
}) 
.then(function() { 
    return element(otherButton).isDisplayed(); 
}) 
.then(function(otherButtonIsPresent) { 
    if(otherButtonIsPresent) { 
     return browser.wait(EC.elementToBeClickable(element(otherButton)), getWaitTime()) 
      .then(function() { 
       element(otherButton).click(); 
       return element(continueButton).isPresent(); 
      }) 
    } 
}) 

, 나는 이러한 검사 및 이력서를 통과 할 수 오전 정상적으로. 플래그없이 동일한 테스트를 실행하면 테스트를 실패하고 클릭하기 전에 otherButton을 찾는 동안 실속합니다.

디버깅하는 동안 중단 점을 설정하고 단추를 클릭하기 전에 화면에 단추가 나타날 때까지 기다리는 것이 궁금합니다.

클릭하기 전에이 요소가 페이지에 표시되는지 확인하고이를 수행하는 다른 방법이 있는지 궁금합니다.

감사합니다.

+0

일부 특정 조건까지로 webdriver를 만들기 위해 ExpectedConditions과 함께 browser.wait()를 사용해보십시오. http://www.protractort.org/#/api?view=ProtractorExpectedConditions를 참조하십시오. –

답변

0

저는 아직 답변을 드릴 수 없습니다.

당신은 기본적으로 자신을 언급합니다 : 버튼을 클릭 한 후에는 다음 버튼을 클릭 할 때까지 기다리기만하면됩니다. 따라서 .then() 기능은 사용하는 버튼에서 시작해야합니다. 내게 그것은 세 줄이 쳐진 된 .then() -functions 같은 조건에 따라 달라집니다, 그래서 .click() 첫 번째 단추 후 두 번째 .then() 즉시 실행되기 전에 완료하려면 이전 .click() 기다리지.

.then(function() { 
    element(button).click().then(function(){ 
     element(otherButton).click().then(function(){ 
      return element(continueButton).isPresent(); 
     }); 
    }); 
}); 

을 아니면 ExpectedConitions 갈 경우, 당신은 .then() -functions을 필요가 없습니다 :

따라서 직접 관련 .click() 뒤에 및 선행 .then() α- 함수 내부의 .then() 퍼팅이 작동합니다.

.then(function() { 
    browser.wait(EC.elementToBeClickable(element(button)), getWaitTime()); 
    element(button).click(); 
    browser.wait(EC.elementToBeClickable(element(otherButton)), getWaitTime()); 
    element(otherButton).click(); 
    browser.wait(EC.elementToBeClickable(element(continueButton)), getWaitTime()); 
    return element(continueButton).isPresent(); 
}); 

This nice post 비동기 쓰기에 약간의 부연하지만, 덕분에 동기 실행을 끄는하기 : 각도기가 허용하는 ControlFlow을 관리해야하기 때문에 당신은 체인 .then() -functions없이 작성합니다. 대안으로

가지 시험을 두 번 확보, 내 두 입력을 결합 예 :

.then(function() { 
    browser.wait(EC.elementToBeClickable(element(button)), getWaitTime()); 
    element(button).click().then(function(){ 
     browser.wait(EC.elementToBeClickable(element(otherButton)), getWaitTime()); 
     element(otherButton).click().then(function(){ 
      browser.wait(EC.elementToBeClickable(element(continueButton)), getWaitTime()); 
      return element(continueButton).isPresent(); 
     }); 
    }); 
});