2017-01-31 3 views
0

이 함수는 요소의 크기 대신 정의되지 않은 값을 반환합니다. 나는 약속에 익숙하지 않았기 때문에 다른 방식으로 그것을 쓸 수 없었다. 정의되지 않았지만 약속 된 약속을 반환하지 않도록 어떻게 다시 작성합니까?약속이 셀레늄 webdriver에서 반환되지 않음

콘솔 :

getElemSize(css, elem){ 
switch(css) { 
    case 'css': 
     return this.driver.findElement(By.css(elem)).getSize().getHeight.then(s => {return s}); 
     break; 
    case 'xpath': 
     return this.driver.findElement(By.xpath(elem)).getSize().getHeight.then(s => {return s}); 
     break; 
    default: 
     return Promise.reject(); 
} 
} 

는 이제 getElemSize이 약속을 반환

var s1 = utilitiesPageObject.getElemSize("css", "#main-content > div > div > div.col-xs-12.col-md-6.align-left"); 
driver.findElement(By.css('#main-content > div > div > div.col-xs-12.col-md-6.align-left > div.slide-down-container > div.slide-down-btn.btn')).click() 
var s2 = utilitiesPageObject.getElemSize("css", "#main-content > div > div > div.col-xs-12.col-md-6.align-left") 
expect(s1).toBeLessThan(s2); 

및 utilitiesPageObject에서 Expected undefined to be less than undefined.이 기능을 사용하면 getElemSize 함수에서 return 문을 잊지

getElemSize(css, elem){ 
    switch(css) { 
     case 'css': 
      this.driver.findElement(By.css(elem)).getSize().getHeight.then(s => {return s}); 
      break; 
     case 'xpath': 
      this.driver.findElement(By.xpath(elem)).getSize().getHeight.then(s => {return s}); 
      break; 
     default: 
      return null; 
    } 
} 
+0

"main-content> div> div> div.col-xs-12.col-md-6.align-left' 요소를 찾고있는 곳에 HTML을 게시 할 수 있습니까? – DomeTune

+0

가능한 중복 [비동기 호출 응답을 어떻게 반환합니까?] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Andreas

+0

@Andreas Where 당신은 질문에서 비동기 호출을 발견 했습니까? – DomeTune

답변

1

을 getElemSize.

+0

감사합니다. 실제로 이것은 getHeight가 여전히 함수가 아니지만 다른 것입니다. 질문 지금 내가 해결할 수 있습니다 – Fenrir

+0

함수는'getElemSize' 함수가 대문자 "css"및 breaks를 히트하기 때문에 함수가'getElemSize' 함수를 호출한다고 생각하지 않습니다. – DomeTune

+0

약간의 오타가 만들어져 변경되었습니다. "selector"와 나는 또한 getHeight에 대한 – Fenrir

관련 문제