Protractor 使用量角器单击模式事件后的按钮

Protractor 使用量角器单击模式事件后的按钮,protractor,Protractor,我有一个问题,点击一个按钮,是在一个模式或在一个页面上的模式应该已经关闭。以下是我的经验: 我正在处理一个模态。我创建动作来显示它。我有一个等待功能,等待模态的一个项目是“可点击的”(这允许它同时出现和显示)。然后,我验证模态上的文本 所有这些都是成功的。但是,当我试图单击按钮关闭它时,我得到一个错误,指出页面上的另一个元素可以单击。我想我需要禁用角度(和CSS?)动画。这个答案仍然与最新版本的量角器有关吗? 以上答案的问题是typescript无法识别“角度”对象 我也看到了这个问题:但“答案

我有一个问题,点击一个按钮,是在一个模式或在一个页面上的模式应该已经关闭。以下是我的经验:

我正在处理一个模态。我创建动作来显示它。我有一个等待功能,等待模态的一个项目是“可点击的”(这允许它同时出现和显示)。然后,我验证模态上的文本

所有这些都是成功的。但是,当我试图单击按钮关闭它时,我得到一个错误,指出页面上的另一个元素可以单击。我想我需要禁用角度(和CSS?)动画。这个答案仍然与最新版本的量角器有关吗? 以上答案的问题是typescript无法识别“角度”对象

我也看到了这个问题:但“答案”是睡2秒钟。不是我想要的解决方案(如果可能的话)

无论如何,我找到了一种复制我所说内容的方法。以下规范将把“角度材质”页面加载到对话框演示页面。它将单击确认对话框按钮,验证模式上的标题文本,单击关闭按钮,然后再次尝试重复这些步骤。它第二次失败,即使它应该一直等到按钮可点击为止

/**
 * modal.conf.js
 */
exports.config = {
  framework: 'jasmine',
  specs: ['modal.spec.js'],
  useAllAngular2AppRoots: false,
  jasmineNodeOpts: {
    'stopSpecOnExpectationFailure': true,
    showColors: true
  }
};

'use strict';
/**
 * modal.spec.js
 */

var headerText = "Would you like to delete your debt?";

describe('Click Modal and Close test', function () {
    beforeAll(function () {
        browser.get('https://material.angularjs.org/latest/demo/dialog')
    });

    it('should click to open modal', function () {
        confirmBtn.click().then(function () {
            WaitForLoad(cancelBtn).then(function () {
                expect(headerTextEl).toEqual(headerTextEl);
            });
        });
    });

    it('should click to close modal', function () {
        cancelBtn.click().then(function () {
            WaitForLoad(confirmBtn);
        });
    });

    it('should click to open modal', function () {
        confirmBtn.click().then(function () {
            WaitForLoad(cancelBtn).then(function () {
                expect(headerTextEl).toEqual(headerTextEl);
            });
        });
    });

    it('should click to close modal', function () {
        cancelBtn.click().then(function () {
            WaitForLoad(confirmBtn);
        });
    });

});

// region Page Objects
var confirmBtn = $('.layout-margin > button:nth-child(2)');
var headerTextEl = $('.md-title');
var cancelBtn = $('button.md-cancel-button');
// endregion

// region actions
var WaitForLoad = function (el, timeout) {
    var EC = protractor.ExpectedConditions;
    return browser.wait(EC.elementToBeClickable(el), timeout);
};
// endregion