遵循量角器代码
const tabs = await element.all(by.id('tab'));
tabs.forEach(async tab => {
tab.click().then(function() {
element.all(by.id('radio1')).click();
});
});
await element(by.id('saveAndContinue')).click();
仅在最后一个选项卡中单击radio1,因为saveAndContinue的最后一行被隐藏,因此其click()失败
虽然睡眠确实在FOR循环之外工作,但当我想在radio1单击之前留出时间时却无法工作
编辑1:问题是每一行都在执行但radio1单击最后一个选项卡,而不是以前单击的选项卡。单击制表符可快速使radio1响起来。
最佳答案
需要注意的几件事,“ id”属性必须唯一。您不应有多个具有相同ID的元素,否则可能会导致一些古怪的行为。
将此答案作为来源Does ID have to be unique in the whole page?
另外,element.all()将返回一个元素数组,因此您尝试单击一个元素数组。
请参阅量角器文档上element.all()的文档
https://www.protractortest.org/#/api?view=ElementArrayFinder
假设元素以数组形式返回,尽管使用重复的html id,您仍需要像这样单独单击它们
element.all(by.id('radio1')).then(function (myIds) {
myIds[0].click();
myIds[1].click();
});
或者当然可以通过它们循环。
祝你好运
关于javascript - Protractor -在For Each中行为不正常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57695776/