使用量角器

时间:2016-10-14 21:07:29

标签: protractor

我应该在模式应该关闭后点击模态或页面上的按钮时遇到问题。这是我的经历:

我有一个我正在处理的模态。我创建了显示它的动作。我有一个等待功能,等待其中一个模态的项目是"可点击的" (这允许它既存在又显示)。然后我验证模态上的文本。

以上所有都是成功的。但是,当我尝试单击按钮关闭它时,我收到一条错误,指出页面上的另一个元素是可点击的。我想我需要禁用角度(和CSS?)动画。这个答案是否仍与最新版本的量角器有关? How to disable animations in protractor for angular js application 我对上述答案的问题是打字稿没有识别出" angular"对象

我也看到了这个问题:Click on a button in a Modal Window - Protractor但是"答案"是睡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

0 个答案:

没有答案