【问题标题】:Cypress wait command in each loop每个循环中的赛普拉斯等待命令
【发布时间】:2021-01-20 15:17:03
【问题描述】:

我有一组用于 api 调用的代码。我需要根据 api 调用响应停止每个循环。 期望的结果:每个循环在 resolve 返回 false 后停止; 当前结果:错误,函数返回永远不会解决的承诺;

cy.wrap(array).each(function(code, index, arr) {

     return new Cypress.Promise((resolve) => {
        cy.intercept('GET', ApiUrl + code).as(`searchApi${code}`);
        cy.get('input').type(code); // Sends the api request
        
        cy.wait(`@searchApi${code}`).then(({ request, response }) => {
          
          resolve(response.body.IsAcceptedForCollection);
        });
     }).finally(result => {
         return result;        // Result should be bool, false should stop each loop
     }); 
});

我想在等待命令中等待每次迭代如何解决,然后再停止循环或继续下一次迭代。

【问题讨论】:

  • 这不是承诺应该起作用的。为了实现这一点,你需要链接你的承诺。
  • @MetallimaX 这就是我想要在这里实现的,问题是第一个承诺永远不会解决

标签: javascript cypress


【解决方案1】:

您应该尝试使用async/await 模式。

【讨论】:

  • 赛普拉斯不使用实际的承诺,它使用内部的command queue。因此,无法使用 async/await。
猜你喜欢
  • 2020-07-02
  • 1970-01-01
  • 2019-03-15
  • 2022-12-19
  • 1970-01-01
  • 2022-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
相关资源
最近更新 更多