我需要一些帮助,在量角器中嵌套for循环和正确转换/理解promise。在下面的“测试”中,该功能适用于所有值,但只要我尝试将嵌套for循环放到南方,有人对此有任何清楚的建议吗?我已经尝试了forEach,它表明了固有地处理承诺问题,但我似乎得到了相同的结果。量角器嵌套for循环
我的测试数据是这样的:
objectPage.chartValues = {
[['chart','ChartID01'],['title','TitleText01'],['Name01','value01'],['Name02','Value02']],
[[‘chart','ChartID02'],['title','TitleText02'],['Name01','value01'],['Name02','Value02']],
[[‘chart','ChartID03'],['title','TitleText03'],['Name01','value01'], [‘Name02’,'Value02'],['Name03','Value03']]
}
it ('test', function(){
for (chartNumber = 0; chartNumber < objectPage.chartValues.length; chartNumber++) {
for (chartEntry = 1; chartEntry < ObjectPage.chartValues[chartNumber].length; chartEntry++) {
//for readability of next call pulled out here
chart = objectPage.chartValues[chartNumber][0][1];
name = objectPage.chartValues[chartNumber][chartEntry][0];
value = objectPage.chartValues[chartNumber][chartEntry][1];
pageObject.getbackgroundcolor(chart, name).then(function (color) {
expect(pageObject.getElementFromTable(chart, name, color).getText())
.toEqual(value);
});
}
}
});
//function calls in pageobject the call for get background is straight forward.
this.getbackgroundcolor = function (chartName, valueName) {
return element(by.id(chartName)).element(by.cssContainingText('.dxc-item', valueName)).element(by.tagName('rect')).getAttribute('fill');
//get element is very similar.
this.getElementFromTable = function(chartName, valueName, colorname) {
some searching stuff..
return element(by.css(‘tspan'));
我的结果似乎表明一下执行,而不是从实际返回的期望。最后试图找到背景颜色为null的项目的值。我知道这是不正确的,因为我已经单独运行所有的值,并且顺序没有问题。希望我避免切割和过去/泛化错误。
谢谢。
更新: 它( '验证页面上的图表',函数(){
myChartlength = objectPage.chartValues.length;
for (chartNumber = 0; chartNumber < myChartlength; chartNumber++) {
(function (chartNumber) {
myEntrylength = objectPage.chartValues[chartNumber].length;
chartValues = objectPage.chartValues[chartNumber];
for (chartEntry = 2; chartEntry < myEntrylength; chartEntry++) {
(function (chartEntry) {
//pulled these out for readablility of next call.
chart = chartValues[0][1];
name = chartValues[chartEntry][0];
value = chartValues[chartEntry][1];
console.log('chart: ' + chart + ', name: ' + name + ', value: ' + value);
page.getbackgroundcolor(chart, name).then(function (color) {
expect(objectPage.getElementFromTable(chart, name, color).getText()).toEqual(value);
});
})(chartEntry);
};
})(chartNumber);
};
});
你应该重新格式化你的问题 - 代码应该被格式化为代码。使用'code'按钮:] – FuzzyAmi
听起来像[闭环内部的JavaScript闭包 - 简单实用示例]的副本(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example ) 对我来说。如果没有,请先解决。 – Bergi