繁体   English   中英

如何退出Nightwatch中的'.elements'循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM