Protractor: 'wait' doesn't work with “element.all”

前端 未结 2 334
予麋鹿
予麋鹿 2021-01-12 02:08

I write Protractor automation tests and faced an issue. Wait command doesn\'t actually wait for one of the array elements. See the example below: I try to wait for the first

2条回答
  •  生来不讨喜
    2021-01-12 02:26

    element.all(by.repeater('category in listCtrl.categories')).get(0) will ALWAYS throw an error if there are no elements to 'get' (source: element.js ElementArrayFinder.prototype.get)

    You can do:

    browser.wait(function() {
        return category.count().then(function(catCount) {
            if (catCount > 0) {
                return EC.visibilityOf(category.get(0));
            }
        }
    }, 20000);
    

    Or you could probably just wait until all the elements are visible, and it would do what you are asking it to do (because it will wait for the 'all' promise to resolve completely anyway, not just break out when it gets the first one):

    browser.wait(EC.visibilityOf(category), 20000);
    

提交回复
热议问题