我应该在模式应该关闭后点击模态或页面上的按钮时遇到问题。这是我的经历:
我有一个我正在处理的模态。我创建了显示它的动作。我有一个等待功能,等待其中一个模态的项目是"可点击的" (这允许它既存在又显示)。然后我验证模态上的文本。
以上所有都是成功的。但是,当我尝试单击按钮关闭它时,我收到一条错误,指出页面上的另一个元素是可点击的。我想我需要禁用角度(和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