首页 > 解决方案 > 我的应用程序中有一个以表格格式显示的请求编号(字符串)列表,它有分页,所以有多个页面目录

问题描述

我有一个 for 循环来迭代页面并使用每个块来迭代该页面中表中的请求号。当表中的请求号与我的请求匹配时,它应该选择该请求并退出循环。我被困在这里,因为我无法打破循环。

 M_SelectRequestNoThen(request) {
    let exit = true;
    let i;
    cy.wait(500);

    this.E_TotalPages()
      .invoke("text")
      .then((text) => {
        let total = text;
        cy.log("totalpages", total);

        for (i = 0; i < total; i++) {
          cy.log("i inside while", i);

          this.E_RequestRows().each(($el, $index) => {
            cy.wrap($el)
              .invoke("text")
              .then((text) => {
                cy.log("text", text);

                if (text.trim().includes(request)) {
                  this.E_RequestSelect(request).click();
                  exit = false;
                }
              });
          });
          i++;
          if (exit) {
            this.E_NextButton().click();
          } else {
            break;
          }
        }
      });
  }

因为我不能在 then 块中使用 break;使用布尔退出但即使在 then 块之外也没有得到更新的值。因此,即使找到我的请求,它也会导航到下一页。那么在'if(text.trim().includes(request))'条件得到满足后,我怎样才能打破我的for循环?

标签: javascriptcypress

解决方案


我的情况是我有 4 页列表。如果在第一页中找不到我的字符串,则必须单击下一页。以这种方式,它必须迭代列表和页面,直到找到字符串然后退出。如果它的单页方案我的每个块都有效。如果在整个第一页中没有找到字符串,我必须在每个块之外检查以进入下一页或中断循环。


推荐阅读