Javascript For循环在量角器测试中仅执行一次
我正在尝试自动化角度应用程序。我有一个数组中存储的元素下拉列表。我想循环遍历所有数组元素,如果条件满足,则执行一些操作。但是for循环只运行一次Javascript For循环在量角器测试中仅执行一次,javascript,angularjs,promise,protractor,ui-automation,Javascript,Angularjs,Promise,Protractor,Ui Automation,我正在尝试自动化角度应用程序。我有一个数组中存储的元素下拉列表。我想循环遍历所有数组元素,如果条件满足,则执行一些操作。但是for循环只运行一次 expect(element(by.css('button.button.primary')).isPresent()).toBe(true).then(function() { for (var i = 0; i < array1.length; ++i) { browser.sleep(2000);
expect(element(by.css('button.button.primary')).isPresent()).toBe(true).then(function() {
for (var i = 0; i < array1.length; ++i) {
browser.sleep(2000);
console.log(array1);
console.log('Configuring ' + array1[0][i]);
browser.sleep(3000);
// First sens config
if (array1[0][i] === 'Sens1') {
element(By.linkText(array1[0][i])).click().then(function() {
console.log('Configuring ' + array1[0][i]);
});
element(by.xpath('//button[@type="submit"]')).click();
browser.sleep(1000);
browser.driver.findElement(by.css('button.button.primary')).click().then(function() {
browser.sleep(1000);
});
});
}
// Second Sens Config
else if (array1[0][i] === ''
Sens2 ')') {
element(By.linkText(array1[0][i])).click().then(function() {
console.log('Configuring ' + array1[0][i]);
});
element(by.xpath('//se-sensor-chooser-table//tr/td[4]')).getText().then(function(state) {
element(by.xpath('//button[@type="submit"]')).click();
browser.sleep(1000);
browser.driver.findElement(by.css('button.button.primary')).click().then(function() {
browser.sleep(1000);
});
});
} else {
console.log('No Sensors');
}
expect(元素(by.css('button.button.primary')).isPresent()).toBe(true)。然后(函数(){
对于(变量i=0;i
}如果..else的代码中有一些语法错误。现在,从您的代码中,您有了二维数组。为了让For循环多次执行,数组的第一个索引应该有多个元素。意思-如果你有一个数组
array1=[['Sens1','Sens2','Sens1','Sens2','Sens3']如果在for循环中使用array1.length
,它将只执行一次,而不会执行五次,因为数组的长度为1。如果要在此处迭代每个元素,则必须在for循环中使用array1[0].length
。我已经添加了一个数组供您参考,格式化并更正了下面的代码。您可以运行它来查看它是否工作,然后取消注释,它应该会工作,除非您的终端没有任何逻辑缺失。确保你有合适的数组。希望能有帮助
试一试-
//expect(元素(by.css('button.button.primary')).isPresent()).toBe(true)。然后(函数(){
数组1=[[Sens1'、'Sens2'、'Sens1'、'Sens2'、'Sens3'];
对于(var i=0;i
首先,使用i++
而不是++i
。其次,如果<代码>条件中存在错误,则在<代码>条件中存在错误。请验证<代码>for
循环的打开和关闭<代码>{}谢谢您的回复!我使用map而不是for循环,这样它将遍历所有元素并执行所需的操作。@ThulasiRajuAD,太好了。
//expect(element(by.css('button.button.primary')).isPresent()).toBe(true).then(function () {
array1 =[ ['Sens1','Sens2','Sens1','Sens2','Sens3']];
for (var i = 0; i < array1[0].length; i++) {
console.log("inside forloop");
/* browser.sleep(2000);
console.log(array1);
console.log('Configuring ' + array1[0][i]);
browser.sleep(3000); */
// First sens config
if (array1[0][i] === 'Sens1') {
console.log("inside if");
/* element(By.linkText(array1[0][i])).click().then(function () {
console.log('Configuring ' + array1[0][i]);
});
element(by.xpath('//button[@type="submit"]')).click();
browser.sleep(1000);
browser.driver.findElement(by.css('button.button.primary')).click().then(function () {
browser.sleep(1000);
}); */
} else if (array1[0][i] === 'Sens2') {
console.log("inside else");
/* element(By.linkText(array1[0][i])).click().then(function () {
console.log('Configuring ' + array1[0][i]);
});
element(by.xpath('//se-sensor-chooser-table//tr/td[4]')).getText().then(function (state) {
element(by.xpath('//button[@type="submit"]')).click();
browser.sleep(1000);
browser.driver.findElement(by.css('button.button.primary')).click().then(function () {
browser.sleep(1000);
});
}); */
} else {
console.log('No Sensors');
}
}
//});