在element.all语句的while循环中,我试图通过单击突出显示表上的元素,然后单击删除按钮,然后在确认弹出窗口上单击“确定”。
问题是当我运行量角器时,while循环似乎仅遍历表中的行-即:only items [j] .click(); 和j ++似乎在while循环中执行,而我的两次jquery单击直到最后才执行一次。我是否在'element.all then语句'中的while循环中缺少一些特殊的东西?
请帮忙!
it('ADD MULTIPLE CAMERAS AND VERIFY', function() {
browser.get('http://localhost:3000');
var singleCamsToAdd = 5;
var multiCamsToAdd = 2;
var totalCams = singleCamsToAdd + multiCamsToAdd - 1;
var newDesign = element(by.css('[ng-click="fileManager.newFile()"]'));
var addCamera = element(by.css('[ng-click="design.addCamera()"]'));
newDesign.click();
//Multiple cameras added as many different rows
for(i=0; i<singleCamsToAdd ; i++)
addCamera.click();
//Multiple cameras added in one camera row
var quantity = element(by.css('[ng-model="cameraForm.qty"]'));
quantity.clear();
quantity.sendKeys(multiCamsToAdd);
//Verify # rows corresponds with # cameras
element.all(by.css('tbody[class ="bso ng-scope"] tr')).then(function(items) {
expect(items.length).toBe(singleCamsToAdd);
expect(items.length + (multiCamsToAdd-1) ).toBe(totalCams);
var j = 0;
while(j < items.length) {
items[j].click();
$('[ng-click="editCamera.delete()"]').click();
$('[data-ng-click="modalOptions.ok();"]').click();
j++;
}
});
});
我不是问题出在循环,而是等待。尝试等待模式,然后单击它:
var modalLocator = by.css('[data-ng-click="modalOptions.ok();"]');
element(by.css('[ng-click="editCamera.delete()"]')).click();
browser.driver.wait(protractor.until.elementLocated(modalLocator), 5000);
element(by.css(modalLocator)).click();
如果页面加载时模态已经在dom中,则可能只需要等待它变得可见即可:
var modal = element(by.css('[data-ng-click="modalOptions.ok();"]')); //hidden element
element(by.css('[ng-click="editCamera.delete()"]')).click();
browser.driver.wait(protractor.until.elementIsVisible(modal), 5000);
element(by.css(modalLocator)).click();
更新此外,尝试将elementFinder调用移入循环,这可能是因为dom结构在某些时候发生了变化,并且量角器无法在dom中找到先前找到的元素(这只是我的猜测):
var rowsLocator = by.css('tbody[class ="bso ng-scope"] tr');
element.all(rowsLocator).then(function(items) {
var i;
for (i=0; i<items.length; i++) {
elements.all(rowsLocator).get(i).click();
$('[ng-click="editCamera.delete()"]').click();
$('[data-ng-click="modalOptions.ok();"]').click();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句