解决量角器承诺后从函数退出

问题描述 投票:0回答:1

我对JavaScript和Protractor还是陌生的。我的测试中有一个简单的任务,我无法完成。

  1. 检查网页上的可用选项卡。
  2. 检查元素在网页上是否可见。
  3. a)如果是,return deffered.fullfil(true)b)如果否,-点击进行中标签-点击可用标签。-转到步骤1。

我正在尝试递归地执行此操作,下面是我的代码。它正在打印找到的Element,但此后再也不会退出该功能并超时。

var check_availibility = function(counter, totalCount, element){
var deffered = rpotractor.promise.deffer()
if(counter <= totalCount){
    browser.wait(function(){
        browser.wait(EC.visibilityOf(element),2000)
        return element
    }).then(function(success){
        console.log('Element found.')
        return deffered.fulfill(true)
    }, function(err){
       inprogressTab.click()
       .then(() => availableTab.click())
       .then(() => check_availibility(counter+1 , totalCount, element))
    })
   } else{
   return deffered.reject(false)
  }
  retrun deffered.promise
}
javascript protractor cucumberjs
1个回答
0
投票

我在您的共享代码上看到一些语法错误。下面,我尝试修复这些错误并提供了预期的行为,但仍然不知道inprogressTab的来源。

const check_availibility = function(counter, totalCount, element) {
  const deferred = protractor.promise.defer();
    if (counter <= totalCount) {
       browser
        .wait(() => browser.wait(EC.visibilityOf(element), 2000))
   .then(
    element => {
      console.log("Element found.");
      return deferred.fulfill(true);
    },
    err => {
      inprogressTab
        .click()
        .then(() => availableTab.click())
        .then(() => check_availibility(counter + 1, totalCount, element));
    }
  );
} else {
   return deferred.reject(false);
}
  return deferred.promise;
};
© www.soinside.com 2019 - 2024. All rights reserved.