2015-06-21 27 views
1

我是量角器(和異步JavaScript)的新手,但我最近幾周的學習,我真的很喜歡它。對於量角器測試,我們可以在沒有browser.wait()函數的情況下獲得waitElement對象值嗎?

由於我們處理對象,我試圖想出一個函數,如果對象是可見/存在的,它返回布爾值。

部分實現將是這樣的:

function waitObject(elm, timeout) { 
    return browser.driver.wait(function() { 
     return elm.isPresent().then(function(res) { 
      return res; 
     }); 
    }, timeout); 
} 

我想在這裏實現兩件事情:

1)在超時後返回真/假。

2)當它是假的,它不會拋出超時錯誤,但只是假。所以,我可以繼續我的剩餘測試。

回答

1

只需使用thenbrowser.wait回到其解決或拒絕視傳遞到browser.wait條件的承諾:http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait

waitObject(element, 1000).then(function() { 
    // The condition resolved truthy, element is present 
}, function() { 
    // Timed out 
}); 

這樣你就可以依靠,如果條件超時或沒有做不同的事情。

我認爲這將是棘手,但不會從函數返回承諾。在量角器中完成的所有事情都發生異步。

+0

是的,你絕對正確@Olov。我沒有正確使用(或理解)承諾拒絕。謝謝! 功能waitObject(榆樹,超時){ 回報browser.driver.wait(函數(){ 回報: 而不是在發送方解決的,我在返回true/false值函數級別做(null,function(){ return false; });然後(函數(res){返回res; }); },超時)。 } –

相關問題