【发布时间】:2014-12-20 14:41:41
【问题描述】:
我们有一个带有行网格的应用程序,具有每页选择和分页,并希望进行 e2e 测试,该测试执行导航和 PP 选择,然后通过将其与 DB 的结果进行比较来检查显示的结果(伪代码):
it('should check navigation and pp', function() {
for(i=0;i<SELECT.options;i++) {
element(by.repeater('SELECTOR HERE(i)')).click();
browser.wait(function which checks URL contains a segment(i));
browser.wait(function which checks if a 'loading div is displayed');
for(j=0;j<PagesForPP(i);j++) {
runExpects('for pp=i'); //contains a couple expect(someElement.text).toContain(asynResult());
element(by.css('SELECTOR(j)').click();
browser.wait(function which checks URL contains a segment(j));
browser.wait(function which checks 'loading div is displayed');
}
}
});
其中 function(i) 是一个依赖于当前 Perpage 和 function(j) 的调用
我的问题是:我们如何使用 protractor.promise.controlFlow() 或更好的方式(如果可用)以量角器理解的方式(可能同步执行)嵌套两个循环。
目前,量角器忽略诸如 browser.wait(检查 URL 包含段 (i) 的函数) 之类的函数; 看起来像这样:
waitForPageChange: function (urlSegment) {
console.log('>> Waiting for URL to contain: ', urlSegment);
var currentUrl;
return browser.getCurrentUrl().then(function (url) {
currentUrl = url;
}).then(function () {
browser.wait(function () {
return browser.getCurrentUrl().then(function (url) {
if (urlSegment) {
return url.indexOf(urlSegment) >= 0;
}
return url !== currentUrl;
});
});
});
}
e2e 测试在期望值有效之前完成(例如:我们在第 1 页,我们已经到达第 2 页和第 3 页检查 => 所有测试都失败了,因为它们正在检查不正确的值。
【问题讨论】:
标签: javascript for-loop asynchronous protractor dry