Javascript while while循环没有运行直到条件在appium + wd.js中得到满足

时间:2017-04-13 12:41:07

标签: javascript android mocha appium ui-automation

我正在尝试使用wd.js计算 android appium中回收站视图的总元素。

为此,我使用逻辑:

1.对于id,获取屏幕上显示的所有元素>>获取每个元素的唯一内容描述并将其保存到数组中。

2.Swipe / scroll the screen>>将元素的唯一属性保存到数组>>而数组的总长度不等于总计数

我在下面写了代码:

it("Scroll and save offerid to offersPresent List", function () {
  while(offersPresent.length !== offersCount) {
     return  offersPOM.swipeNew(driver, function (err, res) { }).then(function () {
           driver.elementsById('someId').then(function (els) {
               els.forEach(function (el) {
                   el.getAttribute('contentDescription').then(function (offerId) {
                      //Here I check if the offerId is already there in the array or not
                       if (offersPresent.indexOf(offerId) === -1) {
                           offersPresent.push(offerId);
                       }
                       console.log('offersPresent'.green, offersPresent);
                   })
               })

           })
       })
   }
 });

swipNew功能是:

exports.swipeNew = function (driver, callback) {
 var action = new TouchAction(driver);
  action
   .press({ x: 17, y: 1500 })
   .wait(2000)
   .moveTo({ x: 17, y: 254 })
   .release();
 return action.perform().then(function (err, res) {
   return callback(err, res);
 })
};

问题是无论条件如何,此循环只运行一次。 如何使这个循环运行直到满足while条件?

1 个答案:

答案 0 :(得分:0)

Javascript中的return函数将停止while循环,因此它只会在while循环中尝试一次代码。

以下是另一个更详细解释的问题:Javascript, while loop return