如何退出' .elements'在守夜人循环

时间:2017-10-23 23:52:47

标签: javascript node.js nightwatch.js

我来自Java世界,所以我与Nightwatch有点挣扎。我有一个用例,我在页面上获取所有id的列表,如果它匹配某个id,它应该点击它并退出循环。但是我已经尝试了不同的东西来退出循环,比如返回,休息,甚至包裹尝试捕获但仍然没有运气。如果它是普通的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
        }
      })
    }
})

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用id作为css选择器的一部分添加元素的选择: article${cardElement} [data-id='1018925']

但是,您评论的是动态设置它。因此,还有其他更适合的功能,例如perform

添加到浏览器的任何通话仍然会在队列中按顺序运行,因此您仍然可以在browser.elementIdClick(elem.ELEMENT);来电中运行perform

答案 1 :(得分:0)

如果添加了“success”变量,如果返回true则会中断,该怎么办?

jQuery('area').each(function(){
var text = jQuery(this).attr('title'),
    link = jQuery(this).attr('href'),
    place = jQuery(this).attr('coords').toString(),
    left = place.split(",")[0],
    top = place.split(",")[1],
    right = place.split(",")[2],
    bottom = place.split(",")[3];

jQuery('<a href="'+link+'" style="position: absolute; top: '+top+'px; left: '+left+'px; background: white; border: 1px solid;">'+text+'</a>').appendTo('.entry-content');
//console.log(text + ' ' + link + ' ' + place + ' ' + left + ' ' + top + ' ' + right + ' ' + bottom);