量角器在承诺中休息然后()

时间:2018-02-14 09:40:38

标签: javascript selenium promise protractor

我在角度应用上自动执行e2e测试。我们在几个输入元素上有虚拟滚动(一次只加载10-20个项目,向下滚动加载更多项目并删除以前的项目以提高性能)。

我创建了一个滚动方法,直到找到DOM元素并单击它。但是,在我点击元素后,我不知道如何停止循环。

这是我到目前为止所做的:

  findQuery(queryName){
    this.getSavedQueryCount().then((queryCount)=>{ // Total nb of items
    this.count().then((displayCount)=>{ //nb of items this screen can display
    let count = 0;
    let flag = 0;
    let actualCount = displayCount + 1;
    do
    {
      if(count % (actualCount) === 0 && count !== 0) count++; //handling weird behavior, index 0 never gets deleted so we increment by 1 to get the next item.
      browser.executeScript('arguments[0].scrollIntoView({behavior: "smooth", block: "end"});', this.getSavedQuery(count % actualCount)); // scroll to elem at index
      this.getSavedQueryByName(queryName).isPresent().then((bool)=>{ // clicking on elem if it's in the DOM
        if(bool)
        {
          this.getSavedQueryByName(queryName).getAttribute('class').then((cl)=>{
            if(!(cl === "selected"))//making sure to click only once so we don't deselect the item
            {
              this.getSavedQueryByName(queryName).click();
              flag = 1;
            }
          });
        }
      });
      count += 1;
    } while(queryCount > count || flag);
  });
});
}

在得到这个问题的答案后,请不要判断我将重构的代码(不要考虑奇怪的索引处理)。 到目前为止,这种方法有效,但它永远不会停止循环,直到queryCount>计数。我希望它在单击元素后停止循环(使用标志var)。

提前致谢。

0 个答案:

没有答案