在 Protractor 中对多个按钮使用循环

Using a loop for multiple buttons in Protractor

目前我正在处理一个 Protractor 项目,该项目有多个或只有一个、重复出现、没有问题的错误消息,在继续进行其余测试之前必须清除(单击“确定”)。在页面加载开始时显示的错误消息有时可能不止一条,我希望全部显示 "click out"。一个的代码很简单:

alertMessages['alertMessage'].isPresent().then(function (isHere) {
                        if (!isHere) {
                           alertMessages['alertMessageOKButton'].click();
                        }
                    });

我尝试围绕它进行一个简单的循环,由于某种超出我所知的原因,它工作了一段时间,现在已经停止正常工作了。

我想你想测试一个警告框。如果我是对的,请使用 browser.switchTo().alert().accept();

有关详细信息,请访问此 link: https://github.com/angular/protractor/blob/3d60689b423749686973227f4b26cbb494f60b66/spec/basic/navigation_spec.js#L8

并在此处查看浏览以获取更多信息:https://angular.github.io/protractor/#/api?view=webdriver.WebDriver.TargetLocator.prototype.alert

您可以使用 async.whilst。基本上一直点击直到所有警报都被解除。这是对您的代码的一些修改(顺便说一句,我不知道 alertMessages 是什么)。但我希望你能明白。

async.whilst(
    function () { 
        return alertMessages['alertMessage'].isPresent().then(function(isPresent){
            return isPresent;
    }) },
    function (callback) {
      alertMessages['alertMessageOKButton'].click();
    },
    function (err, n) {
      console.log('Total number of alerts were '+ n);
      if(err) {
         done(err);
      } else {
        done();
      }
    }
);