2016-11-08 46 views
1

所以我發現代碼網上說非常有效等待一個唯一的標識符,以在頁面上加載,可以與它進行交互之前的這一點點..waitForElementsToBePresent在量角器

this.waitForElementToBePresent = function(element) { 
    browser.wait(function() { 
     return element.isPresent(); 
    }, 60000); 
    }; 

我是新來的JS和量角器..我想知道如何改變這個代碼以等待存在多個元素的元素。我知道你使用$$的標識符時,有倍數,但我怎樣才能改變這種方法認識到,所以我會那麼做這樣的事情..

utility.waitForElementsToBePresent(myElement).get(0); 
+1

試試這個。 'var myElement = $$('。someclass')。get(0); utility.waitForElementsToBePresent(myElement)' –

+0

這個建議對我有用! – Tree55Topz

回答

1

看Alecxe對this question答案。我一直在使用它一段時間,它完美的作品。這裏是我的稍作修改的版本:

// wait for X number of elements 
presenceOfAll = function (elem, num, timeout) { 
    var time = timeout || 5000; 
    console.log('Waiting for elements ' + elem.locator() + ' to have a count of ' + num); 
    return browser.wait(function() { 
     return elem.count().then(function (count) { 
      return count >= num; 
     }); 
    }, time, 'Failed waiting for ' + elem.locator() + ' to have ' + num + ' total items'); 
}; 
0

而不是進行新的功能,我可能會在一組剛剛過去的元素,則等待它。

var els = elements.all(by.css("#id")); 
waitForElementToBePresent(els.last()); 

因爲有所記得療法是「isPresent」和「isDisplayed」,目前平均在頁面上存在的元素,可見或不可見。如果您想等待它實際顯示在頁面上,請先等待它顯示,然後等待它顯示。

http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.last