我想我知道解决方案背后的理论,但我在实施它时遇到了麻烦。请考虑以下代码:
this.selectFirstPassiveService = function () {
getFirstPassiveService().element(by.tagName('input')).click();
}
this.clickAddTask = function () {
getFirstActiveService().element(by.tagName('a')).click();
}
this.selectTask = function () {
getFirstActiveService()
.element(by.tagName('option'))
.$('[value="0"]')
.click();
}
this.saveTask = function () {
getFirstActiveService().element(by.name('taskForm')).submit();
}
getFirstActiveService = function () {
return services.filter(function (elem) {
return elem.getAttribute('class').then(function (attribute) {
return attribute === 'service active ';
});
}).first();
}
getFirstPassiveService = function () {
return services.filter(function (elem) {
return elem.getAttribute('class').then(function (attribute) {
return attribute === 'service passive ';
});
}).first();
}
};
为了最小化代码重复,我创建了两个函数: * getFirstActiveService() * getFirstPassiveService()
我的规格如下:
it('Select service', function () {
servicePage.selectFirstPassiveService();
servicePage.clickAddTask();
servicenPage.selectTask()();
});
clickAddTask()和selectTask()都使用名为getFirstActiveService()的函数。在clickAddTask()中一切运行正常但是当我在selectTask()中使用函数时,量角器无法找到一些元素(存在)。
根据我的理论,当在clickAddTask()中调用函数然后执行时,getFirstActiveService()中的每个命令都在控制流中排队。当重新使用selectTask()中的函数时,命令没有排队,使用了clickAddTask()中创建的实例,因此,从那时起DOM已经发生了变化,因此无法找到一些元素。
现在第一个问题:我的理论是否正确? 第二个问题:我该如何解决这个问题?
提前致谢! 干杯
答案 0 :(得分:0)
我重构了一下它现在有效。 问题出在测试本身,而不是重用功能。