[英]How to exit '.elements' loop in Nightwatch
我来自Java世界,所以我在Nightwatch方面有点挣扎。 我有一个用例,我要获取页面上所有ID的列表,如果它与某些ID匹配,则应单击它并退出循环。 但是我尝试了其他方法来退出循环,例如返回,中断,甚至包装了try-catch仍然没有运气。 如果是普通的javascript,则以上条件应退出循环。 我的代码是:
browser.elements('css selector', `article${cardElement}`, function (res) {
for (let elem of res.value) {
browser.elementIdAttribute(elem.ELEMENT, 'data-id', function (idResult) {
let id = idResult.value;
if(id == '1018925') {
browser.elementIdClick(elem.ELEMENT);
return true;//tried break here as well
}
})
}
})
有什么建议么?
您可以将带有ID的元素的选择添加为CSS选择器的一部分: article${cardElement} [data-id='1018925']
但是,正如您所评论的,您正在动态地设置它。 因此,还有其他一些更适合的功能,例如perform
。
添加到浏览器的任何调用仍然在队列中顺序运行,因此您仍然可以运行browser.elementIdClick(elem.ELEMENT);
从您的perform
电话中
如果添加了“成功”变量,并且如果返回true则中断怎么办?
browser.elements('css selector', `article${cardElement}`, function (res) {
let success = false;
for (let elem of res.value) {
if (success === true) {
break;
}
else {
browser.elementIdAttribute(elem.ELEMENT, 'data-id', function (idResult) {
let id = idResult.value;
if (id == '1018925') {
browser.elementIdClick(elem.ELEMENT);
success = true;
}
})
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.