2017-01-31 20 views
0

この関数は、要素のサイズの代わりに未定義を返します。私は約束に精通していないので、私は別の方法でそれを書くことができませんでした。定義されていないが約束が返されるように書き直すにはどうすればよいですか?selenium-webdriverで未定義の返り値

コンソール:Expected undefined to be less than undefined.

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から機能getElemSize

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

可能な複製[非同期呼び出しから応答を返すにはどうすればよいですか?](@stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Andreas

+0

@Andreas Whereあなたは質問で非同期呼び出しを見つけましたか? – DomeTune

答えて

1

あなたのgetElemSize関数内でreturn文を忘れる:

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は約束を返します。

+0

これは実際にはgetHeightはまだ機能していませんが、別のものです問題は私が今解決することができるかもしれません – Fenrir

+0

私は、関数が 'css 'ケースとヒットするため、関数' getElemSize'がデフォルトのケースをヒットするとは思わないでしょう。 – DomeTune

+0

私が作ったちょっとしたタイプミス私はちょうどgetSize()から取得するオブジェクトの高さ属性を使用していました;私はgetHeightのために今 – Fenrir