【问题标题】:How to catch ngToast with Protractor?如何用量角器捕捉 ngToast?
【发布时间】:2016-11-26 15:58:50
【问题描述】:

我需要在某些操作后以某种方式捕获 ngToast 消息。我尝试了该站点的不同解决方案,但它们没有帮助我,我也不知道为什么。有没有人有一个可行的解决方案?我最后一次尝试是这样的:

var HomePage = require('./home.pageObject');

describe('Home Page tests', function () {
  var homePage = new HomePage();
  var EC = protractor.ExpectedConditions;

  beforeEach(function () {
      browser.get('/#/');
  });

  it('should fail login', function () {
      var toast = $('.ng-toast');
      homePage.signinBtn.click();
      homePage.login('admin', 'Password')
          .then(function () {
              var toast = $('.alert');
              browser.wait(EC.visibilityOf(toast), 3000);
          });
  });
});

谢谢。

【问题讨论】:

    标签: javascript angularjs protractor ngtoast


    【解决方案1】:

    检查显示的 toast 元素,然后尝试使用 css 抓取消息。

    在我们使用 angular-toastr 的一个项目中,这可以解决问题:

    element(by.css('#toast-container .toast-message')
    

    【讨论】:

      【解决方案2】:

      你可以使用这个函数并在测试中调用它: 首先我在 dom 中等待存在,然后是可见性,然后我返回文本:

      this.returnToastText= function(){
      
          browser.wait(EC.presenceOf(element(by.css(".alert"))), 3000).then(function () {
              browser.wait(EC.visibilityOf(element(by.css(".alert"))), 3000).then(function () {
                  return toastText= element(by.css(".alert")).getText();
              })
          })
      
      };
      

      【讨论】:

      • 谢谢,这让我走上了正轨。我试图关闭吐司。现在我正在使用:browser.waitForAngularEnabled(false); //Dont wait for toast timeout var closeToast = $(".close"); browser.wait(EC.presenceOf(closeToast)) .then(() => { console.log(Toast is present) return true; }) closeToast.click(); browser.waitForAngularEnabled(true);
      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2016-10-29
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多