【问题标题】:Retry a different url if cy.visit status returns a 404 status code如果 cy.visit status 返回 404 状态代码,请重试不同的 url
【发布时间】:2020-12-04 23:06:52
【问题描述】:

我正在为我的应用程序编写一些赛普拉斯测试,这些测试应该能够通过使用防毒面具欺骗在沙盒环境和暂存环境中运行。问题是基本 url 略有不同(一个使用 https,一个使用 http)。如果 https(暂存)通过使用条件返回 404,我正在尝试让 cy.visit 命令使用以 http(沙箱)开头的 url。任何建议,将不胜感激!我正在尝试做这样的事情:

cy.visit(staging_url,  {
        if (resp.status === 404) {
            cy.visit(sandbox_url)
        }
});

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    cy.visit() 在页面加载完成后生成window 对象,所以我认为您不能仅使用cy.visit() 检查状态代码。

    我会做这样的事情:

    cy.request(staging_url).then((response) => {
      if (response.isOkStatusCode) {
        cy.visit(staging_url);
      } else {
        cy.visit(sandbox_url);
      }
    });
    

    【讨论】:

    • 不走运,我仍然收到此错误 The response we received from your web server was: > 404: Not Found This was considered a failure because the status code was not '2xx' or '3xx'. If you do not want status codes to cause failures pass the option: 'failOnStatusCode: false' 我尝试将 failOnStatusCode: false 添加为 cy.request 的参数,但仍然出现相同的错误。
    • 您在 cy.request 调用或 cy.visit 中收到该错误?因为我在 cy.visit 上的 404 中遇到了该错误。
    • 在 cy.request 上获取它,所以它似乎在请求上立即失败,然后永远不会碰到 if/else 块。它仍然适用于暂存环境。
    【解决方案2】:

    尝试将failOnStatusCode: false 添加到 Diogo Rocha 的解决方案中:

    cy.request({staging_url, failOnStatusCode: false}).then((response) => {
     if (response.isOkStatusCode) {
        cy.visit(staging_url);
      } else {
        cy.visit(sandbox_url);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 2016-09-16
      • 1970-01-01
      • 2019-03-07
      • 2021-07-24
      • 2019-05-27
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多